Upgrade a database cluster with zero downtime
You can upgrade a DSE or HCD cluster with zero downtime by updating the MissionControlCluster manifest.
For demonstration purposes, this example upgrades a cluster from DSE 6.9.12 to 6.9.13.
The cluster has 1 datacenter (dc1) with 3 nodes, and each node is on a separate rack.
Workflow of user and operators
-
Submit a modified
MissionControlClustermanifest to the control plane Kubernetes cluster. -
Cluster-level operator detects the change and modifies the datacenter-level resource (
CassandraDatacenter).For multi-datacenter clusters, the cluster-level operator processes each datacenter one at a time.
-
Datacenter-level operator detects the change, and then applies the change:
-
Modifies rack-level resource.
-
Terminates the instance in the rack.
-
Bootstraps a replacement node.
If the datacenter uses multiple racks, the datacenter-level operator repeats this process for each rack, one rack at a time.
-
-
User follows Upgrade SSTables steps, if required.
Upgrades of DSE versions follow the same process as configuration change deployments. See Deploy configuration changes to a DSE cluster.
Cluster upgrade with no downtime
-
Modify the existing
MissionControlClusterYAML (demo.yaml) in the control plane Kubernetes cluster, overwriting the value6.9.12in thespec.k8ssandra.cassandra.serverVersionfield with6.9.13:apiVersion: missioncontrol.datastax.com/v1beta2 kind: MissionControlCluster metadata: name: demo spec: k8ssandra: cassandra: serverVersion: 6.9.13 ... -
Submit the version change to the Kubernetes control plane cluster with the following command:
kubectl apply -f demo.yamlThe version upgrade is done as a rolling update.
-
Monitor the progress of the upgrade from the data plane east cluster, looking at the status of the
CassandraDatacenterwith this command:kubectl get cassandradatacenter dc1 -o yamlstatus: cassandraOperatorProgress: Updating conditions: - lastTransitionTime: "2025-08-28T16:07:10Z" message: "" reason: "" status: "True" type: Healthy - lastTransitionTime: "2025-08-28T16:07:10Z" message: "" reason: "" status: "True" type: Stopped ...If the
Updatingoperation’sconditions:statusisTrue, then the update is in progress. When theUpdatingoperation is complete, thecass-operatorchanges theconditions.statustoFalse.
See also
You can trigger an Upgrade SSTables operation to rewrite SSTables into newer formats, if required.