Upgrade a database cluster with zero downtime
You can upgrade a DSE or HCD cluster with zero downtime by updating the MissionControlCluster manifest.
This topic demonstrates upgrading the DSE version from 6.9.12 to 6.9.13.
Prerequisites
-
A prepared environment on either bare-metal/VM or an existing Kubernetes cluster.
Upgrade process
The existing deployment consists of 1 datacenter (dc1) with 3 nodes, each node 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.
-
Datacenter-level operator detects the change and modifies the rack-level resource.
-
Datacenter-level operator terminates the instance in the rack.
-
Datacenter-level operator repeats steps c-e for all racks in one datacenter.
-
Cluster-level operator repeats steps b-e for all datacenters in a cluster, one dc at a time, in the case of a multi-datacenter cluster.
-
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 yamlResult
status: 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.