Skip to the content.

Staged upgrades

The operator performs cluster upgrades in a very conservative manner. The goal is to reduce the maintenance window time when doing an upgrade.

The operator follows a fixed schema to upgrade the cluster:

stateDiagram-v2
    zk: Zookeeper Statefulset
    zkinit: Zookeeper Metadata Initialization Job
    bk: BookKeeper
    broker: Broker
    brokertxn: Broker Transactions Initialization Job
    ar: Autorecovery
    proxy: Proxy
    ba: Bastion
    fn: Functions Worker
    [*] --> zk
    zk --> zkinit : Ready
    zkinit --> bk : Completed
    bk --> broker : Ready
    bk --> proxy : Ready
    bk --> ba : Ready
    bk --> ar : Ready
    broker --> brokertxn : Ready
    brokertxn --> fn : Completed
    fn --> [*] : Ready
    proxy --> [*] : Ready
    ba --> [*] : Ready
    ar --> [*] : Ready

Every component is updated (and then restarted) only if strictly needed. For example, if only the broker needs to be upgraded, then all the other services will be left up and running.

In case of temporary errors or interruptions, the operator will try to apply the desired state specified in the PulsarCluster custom resource until it matches the actual state.