Configuration de StorageClass

La base de données Cassandra stocke les données à l'aide de volumes persistants créés dynamiquement. Pour garantir le bon fonctionnement de la base de données, Apigee nécessite la configuration d'une définition StorageClass reposant sur un disque dur SSD.

Si aucun disque SSD n'est actuellement configuré pour Cassandra, cet article explique comment créer une classe StorageClass qui utilise SSD et en fait la classe par défaut. Lorsque la base de données Cassandra démarre, elle utilise cette classe StorageClass par défaut.

Les étapes décrites dans cet article pour la configuration de StorageClass ne s'appliquent qu'à une nouvelle installation Cassandra. Si une classe Cassandra est déjà installée, vous devez mettre hors service le cluster existant afin de configurer la définition StorageClass. Les modifications apportées à la définition StorageClass d'un cluster Cassandra existant après l'installation ne sont pas acceptées.

Apigee recommande de déployer Apigee hybrid dans au moins deux régions afin de mettre hors service et de réinstaller une région tout en préservant les données dans la région secondaire. Vous pouvez également utiliser une sauvegarde hybride non CSI pour restaurer les données dans une installation régionale après la mise hors service et la configuration de la définition StorageClass requise.

Modifier la StorageClass par défaut

Les étapes suivantes expliquent comment créer une classe StorageClass et en faire la classe par défaut. Pour plus d'informations, consultez la section Modifier la classe de stockage par défaut dans la documentation de Kubernetes.

  1. Obtenez le nom de la classe StorageClass actuelle par défaut :
    kubectl get sc

    Exemple :

    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
      
  2. Décrivez la StorageClass nommée standard-rwo. Notez que son type est pd-balanced :
    kubectl describe sc standard-rwo

    Exemple :

    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>
  3. Créez un fichier appelé storageclass.yaml.
  4. Ajoutez ce code au fichier. Notez que le nom de la nouvelle classe est apigee-sc. Vous pouvez utiliser n'importe quel nom. Notez également que le type de stockage est 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
    
  5. Appliquez la nouvelle StorageClass à votre cluster Kubernetes :
    kubectl apply -f storageclass.yaml
  6. Exécutez les deux commandes suivantes pour modifier la StorageClass par défaut :
    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. Exécutez cette commande pour vérifier que la nouvelle StorageClass par défaut s'appelle bien apigee-sc :
    kubectl get sc

    Exemple :

    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
      
  8. Décrivez la StorageClass pour vérifier la valeur de IsDefaultClass.
    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: