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
MissionControlCluster
manifest 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
MissionControlCluster
YAML (demo.yaml) in the control plane Kubernetes cluster, overwriting the value6.9.12
in thespec.k8ssandra.cassandra.serverVersion
field 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.yaml
The 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
CassandraDatacenter
with this command:kubectl get cassandradatacenter dc1 -o yaml
Result
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
Updating
operation’sconditions:status
isTrue
, then the update is in progress. When theUpdating
operation is complete, thecass-operator
changes theconditions.status
toFalse
.
See also
You can trigger an Upgrade SSTables operation to rewrite SSTables into newer formats, if required.