StorageClass configuration

You are currently viewing version 1.11 of the Apigee hybrid documentation.This version is end of life. You should upgrade to a newer version. For more information, seeSupported versions.

The Cassandra database uses dynamically created persistent volumes to store data. For proper database functioning, Apigee requires you to configure aStorageClass 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.

KEY POINT: Apigee requires the use of SSD for Cassandra.

The steps outlined in this topic for StorageClass configuration are only applicable to anewCassandra 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 anexisting Cassandra cluster after installation are not supported.

Apigee recommends deploying hybrid intwo or more regions, in order to decommission and re-install one region while preserving data in the secondary region. Alternatively, you can use anon-CSI hybrid backup to restore data in a single-region installation, after decommissioning and configuring the required StorageClass definition.

Change the default StorageClass

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.

  1. Get the name of the current default StorageClass:
    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                   15hstandard-rwo (default)  pd.csi.storage.gke.io   Delete          WaitForFirstConsumer   true                   15h
  2. Describe the StorageClass namedstandard-rwo. Note that itstype ispd-balanced:
    kubectl describe sc standard-rwo

    For example:

    kubectl describe sc standard-rwo
    Name:                  standard-rwoIsDefaultClass:        YesAnnotations:           components.gke.io/layer=addon,storageclass.kubernetes.io/is-default-class=falseProvisioner:           pd.csi.storage.gke.ioParameters:            type=pd-balancedAllowVolumeExpansion:  TrueMountOptions:          <none>ReclaimPolicy:         DeleteVolumeBindingMode:     WaitForFirstConsumerEvents:                <none>
  3. Create a new file calledstorageclass.yaml.
  4. Add this code to the file. Note that the name of the new class isapigee-sc. You can use any name you like. Also, note that the storage type ispd-ssd:
    ---kind:StorageClassapiVersion:storage.k8s.io/v1metadata:name:"apigee-sc"provisioner:pd.csi.storage.gke.ioparameters:type:pd-ssdreplication-type:nonevolumeBindingMode:WaitForFirstConsumerallowVolumeExpansion:true
  5. Apply the new StorageClass to your Kubernetes cluster:
    kubectl apply -f storageclass.yaml
  6. Execute the following two commands to change the default StorageClass:
    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"}}}'
  7. Execute this command to verify that the new default StorageClass is calledapigee-sc:
    kubectl get sc

    For example:

    kubectl get sc
        NAME                  PROVISIONER             RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGEapigee-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
  8. Describe both the StorageClass to verify the value ofIsDefaultClass.
    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 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-05 UTC.