Supported versions:
Unsupported versions:
The Cassandra database uses dynamically created persistent volumes to store data. For proper database functioning, Apigee requires you to configure a StorageClass definition that is backed by a solid-state drive (SSD).
If you do not currently have SSD configured for Cassandra, this topic explains how to create a new StorageClass that uses SSD and make it the default class. When Cassandra starts, it will use this default StorageClass.
The steps outlined in this topic for StorageClass configuration are only applicable to a new Cassandra installation. If you already have a Cassandra class installed, you must decommission the existing cluster in order to configure the StorageClass definition. Changes to the StorageClass definition of an existing Cassandra cluster after installation are not supported.
Apigee recommends deploying hybrid in two or more regions, in order to decommission and re-install one region while preserving data in the secondary region. Alternatively, you can use a non-CSI hybrid backup to restore data in a single-region installation, after decommissioning and configuring the required StorageClass definition.
The following steps explain how to create a StorageClass and make it the default class. For more information, see Change the default storage class in the Kubernetes documentation.
kubectl get sc
For example:
kubectl get sc
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
premium-rwo pd.csi.storage.gke.io Delete WaitForFirstConsumer true 15h
standard kubernetes.io/gce-pd Delete Immediate true 15h
standard-rwo (default) pd.csi.storage.gke.io Delete WaitForFirstConsumer true 15h
standard-rwo. Note that its
type is pd-balanced:
kubectl describe sc standard-rwo
For example:
kubectl describe sc standard-rwo
Name: standard-rwo IsDefaultClass: Yes Annotations: components.gke.io/layer=addon,storageclass.kubernetes.io/is-default-class=false Provisioner: pd.csi.storage.gke.io Parameters: type=pd-balanced AllowVolumeExpansion: True MountOptions: <none> ReclaimPolicy: Delete VolumeBindingMode: WaitForFirstConsumer Events: <none>
storageclass.yaml.apigee-sc. You can use any name you like. Also, note that
the storage type is pd-ssd:
--- kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: "apigee-sc" provisioner: pd.csi.storage.gke.io parameters: type: pd-ssd replication-type: none volumeBindingMode: WaitForFirstConsumer allowVolumeExpansion: true
kubectl apply -f storageclass.yaml
kubectl patch storageclass standard-rwo \
-p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'kubectl patch storageclass apigee-sc \
-p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'apigee-sc:
kubectl get sc
For example:
kubectl get sc
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
apigee-sc (default) pd.csi.storage.gke.io Delete WaitForFirstConsumer true 14h
premium-rwo pd.csi.storage.gke.io Delete WaitForFirstConsumer true 15h
standard kubernetes.io/gce-pd Delete Immediate true 15h
standard-rwo pd.csi.storage.gke.io Delete WaitForFirstConsumer true 15h
kubectl describe sc apigee-sc
Name: apigee-sc
IsDefaultClass: Yes
Annotations: kubectl.kubernetes.io/last-applied-configuration={"allowVolumeExpansion":true,"apiVersion":"storage.k8s.io/v1","kind":"StorageClass","metadata":{"annotations":{},"name":"apigee-sc"},"parameters":{"replication-type":"none","type":"pd-ssd"},"provisioner":"pd.csi.storage.gke.io","volumeBindingMode":"WaitForFirstConsumer"}
,storageclass.kubernetes.io/is-default-class=true
Provisioner: pd.csi.storage.gke.io
Parameters: replication-type=none,type=pd-ssd
AllowVolumeExpansion: True
MountOptions:
ReclaimPolicy: Delete
VolumeBindingMode: WaitForFirstConsumer
Events:
kubectl describe sc standard-rwo
Name: standard-rwo
IsDefaultClass: No
Annotations: components.gke.io/layer=addon,storageclass.kubernetes.io/is-default-class=false
Provisioner: pd.csi.storage.gke.io
Parameters: type=pd-balanced
AllowVolumeExpansion: True
MountOptions:
ReclaimPolicy: Delete
VolumeBindingMode: WaitForFirstConsumer
Events:
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2026-07-23 UTC.