Expand Cassandra persistent volumes Stay organized with collections Save and categorize content based on your preferences.
This process allows you to expand the persistent volumes used by the Apigee hybrid Cassandra database to accommodate greater storage needs without needing to create new nodes just to provide more storage.
Overview
The Apigee hybridcassandra component uses persistent volumes to store data. The size of the persistent volume is defined during installation and initial configuration. This initial storage size is an immutable value and cannot be changed. Therefore, any new node added to the cluster will use the same persistent volume size.
It is possible to increase the size of the existing persistent volume by making the changes directly on the Persistent volume Claim, but new nodes will still use the smaller initial persistent volume size.
If your hybrid Cassandra database is nearing its storage capacity, you can use this procedure to expand the existing persistent volumes and allow new nodes to expand their persistent volumes as well.
Note: This process only applies to Kubernetes storage classesthat support PersistentVolume expansion. See theAllow Volume Expansion list in the Kubernetes documentation.If you do not know what storage class your hybrid installation uses, you can check with the following command.
kubectl -n apigee get sc standard -o json | grep 'provisioner'
The output will look something like:
"provisioner": "kubernetes.io/gce-pd",
Wheregce-pd is an abbreviation for thegcePersistentDisk storage class. You can find a list of storage class abbreviations in theParameters list in the Kubernetes documentation.
Expand Cassandra persistent volumes
- Update the volume size to the desired size:
kubectl -n apigee edit pvc
- Check the updated volume capacity:
kubectl get pvc -n apigee
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGEcassandra-data-apigee-cassandra-default-0 Bound pvc-92234ba7-941b-4dab-82c6-8a5288a2c8d4 100Gi RWO standard 21mcassandra-data-apigee-cassandra-default-1 Bound pvc-6be911fc-91f7-465d-a02e-933428ee10b2 100Gi RWO standard 20mcassandra-data-apigee-cassandra-default-2 Bound pvc-14ba34e4-fd5c-4d59-8413-a331dcad3404 100Gi RWO standard 19m
- Set replicas to
0forapigee-controller-managerdeployments in theapigee-systemnamespace:kubectl get deployments -n apigee-system
NAME READY UP-TO-DATE AVAILABLE AGEapigee-controller-manager 1/1 1 1 28m
kubectl edit deployments -n apigee-system apigee-controller-manager
kubectl get deployments -n apigee-system
NAME READY UP-TO-DATE AVAILABLE AGEapigee-controller-manager 0/0 0 0 30m
- Delete STS without cascade deletion:
kubectl -n apigee delete sts --cascade=false apigee-cassandra
kubectl get sts -n apigee
No resources found in apigee namespace.
- Update the your overrides file with new volume size that you specified when you edited the pvc:
cassandra:storage:capacity:100Gi
- Apply the updated configuration to the cluster:
../apigeectl apply --datastore -f overrides/overrides.yaml
Parsing file: config/values.yamlParsing file: overrides/overrides.yamlcleansing older AD's (v1alpha1) istio resources...Invoking "kubectl apply" with YAML config...apigeedatastore.apigee.cloud.google.com/apigee-cassandra unchanged
- Update the controller deployment replicas to previous their state (
`1`):kubectl edit deployments -n apigee-system apigee-controller-manager
- Check if the newly created sts has the updated storage size:
kubectl get sts -n apigee apigee-cassandra -o yaml |grep storage
storage: 100Gi
Check if C* pods data volume got updated with new size:
kubectl exec -n apigee -it apigee-cassandra-default-0 -- df -h|grep "/opt/apigee/data"
/dev/sdb 99G 69M 99G 1% /opt/apigee/data
Except as otherwise noted, the content of this page is licensed under theCreative Commons Attribution 4.0 License, and code samples are licensed under theApache 2.0 License. For details, see theGoogle Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2026-02-19 UTC.