5.13. GCP PD CSI Chauffeur
5.13.1. Vue d'ensemble
OpenShift Container Platform peut provisionner des volumes persistants (PV) à l'aide du pilote Container Storage Interface (CSI) pour le stockage sur disque persistant (PD) de Google Cloud Platform (GCP).
Il est recommandé de se familiariser avec le stockage persistant et la configuration des volumes CSI lorsqu'on travaille avec un opérateur et un pilote d'interface de stockage de conteneurs (CSI).
Pour créer des volumes persistants (PV) provisionnés CSI qui se montent sur des ressources de stockage GCP PD, OpenShift Container Platform installe l'opérateur de pilote GCP PD CSI et le pilote GCP PD CSI par défaut dans l'espace de noms openshift-cluster-csi-drivers
.
- GCP PD CSI Driver Operator: Par défaut, l'Opérateur fournit une classe de stockage que vous pouvez utiliser pour créer des PVC. Vous avez également la possibilité de créer la classe de stockage GCP PD comme décrit dans Stockage persistant à l'aide de GCE Persistent Disk.
- GCP PD driver: Le pilote vous permet de créer et de monter des PV GCP PD.
OpenShift Container Platform utilise par défaut un plugin in-tree (non-CSI) pour provisionner le stockage GCP PD.
Dans les prochaines versions d'OpenShift Container Platform, les volumes provisionnés à l'aide des plug-ins in-tree existants sont prévus pour une migration vers leur pilote CSI équivalent. La migration automatique vers le CSI devrait être transparente. La migration ne modifie pas la façon dont vous utilisez tous les objets API existants, tels que les volumes persistants, les réclamations de volumes persistants et les classes de stockage. Pour plus d'informations sur la migration, voir Migration automatique CSI.
Après la migration complète, les plugins in-tree seront éventuellement supprimés dans les futures versions d'OpenShift Container Platform.
5.13.2. À propos du CSI
Les fournisseurs de stockage ont traditionnellement fourni des pilotes de stockage dans le cadre de Kubernetes. Avec la mise en œuvre de l'interface de stockage des conteneurs (CSI), les fournisseurs tiers peuvent à la place fournir des plugins de stockage à l'aide d'une interface standard sans jamais avoir à modifier le code de base de Kubernetes.
Les opérateurs CSI offrent aux utilisateurs d'OpenShift Container Platform des options de stockage, telles que les instantanés de volume, qui ne sont pas possibles avec les plugins de volume dans l'arborescence.
5.13.3. Paramètres de la classe de stockage du pilote GCP PD CSI
Le pilote CSI (Container Storage Interface) du disque persistant (PD) de Google Cloud Platform (GCP) utilise le sidecar CSI external-provisioner
comme contrôleur. Il s'agit d'un conteneur d'aide distinct qui est déployé avec le pilote CSI. Le sidecar gère les volumes persistants (PV) en déclenchant l'opération CreateVolume
.
Le pilote GCP PD CSI utilise la clé de paramètre csi.storage.k8s.io/fstype
pour prendre en charge le provisionnement dynamique. Le tableau suivant décrit tous les paramètres de la classe de stockage GCP PD CSI qui sont pris en charge par OpenShift Container Platform.
Paramètres | Valeurs | Défaut | Description |
---|---|---|---|
|
|
| Permet de choisir entre des PV standard et des PV à semi-conducteurs. |
|
|
| Permet de choisir entre des PV zonales ou régionales. |
| Identifiant de ressource pleinement qualifié pour la clé à utiliser pour chiffrer les nouveaux disques. | Chaîne vide | Utilise des clés de chiffrement gérées par le client (CMEK) pour chiffrer les nouveaux disques. |
5.13.4. Création d'un volume persistant crypté personnalisé
Lorsque vous créez un objet PersistentVolumeClaim
, OpenShift Container Platform provisionne un nouveau volume persistant (PV) et crée un objet PersistentVolume
. Vous pouvez ajouter une clé de chiffrement personnalisée dans Google Cloud Platform (GCP) pour protéger un PV dans votre cluster en chiffrant le PV nouvellement créé.
Pour le chiffrement, le PV nouvellement attaché que vous créez utilise des clés de chiffrement gérées par le client (CMEK) sur un cluster à l'aide d'une clé Google Cloud Key Management Service (KMS) nouvelle ou existante.
Conditions préalables
- Vous êtes connecté à un cluster OpenShift Container Platform en cours d'exécution.
- Vous avez créé un porte-clés et une version de clé de Cloud KMS.
Pour plus d'informations sur les ressources CMEK et Cloud KMS, voir Utilisation de clés de chiffrement gérées par le client (CMEK).
Procédure
Pour créer un PV crypté personnalisé, procédez comme suit :
Créez une classe de stockage avec la clé Cloud KMS. L'exemple suivant permet le provisionnement dynamique des volumes cryptés :
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: csi-gce-pd-cmek provisioner: pd.csi.storage.gke.io volumeBindingMode: "WaitForFirstConsumer" allowVolumeExpansion: true parameters: type: pd-standard disk-encryption-kms-key: projects/<key-project-id>/locations/<location>/keyRings/<key-ring>/cryptoKeys/<key> 1
- 1
- Ce champ doit être l'identifiant de la ressource pour la clé qui sera utilisée pour crypter les nouveaux disques. Les valeurs sont sensibles à la casse. Pour plus d'informations sur la fourniture de valeurs d'ID de clé, voir Récupérer l'ID d'une ressource et Obtenir l'ID d'une ressource Cloud KMS.
NoteVous ne pouvez pas ajouter le paramètre
disk-encryption-kms-key
à une classe de stockage existante. Cependant, vous pouvez supprimer la classe de stockage et la recréer avec le même nom et un ensemble de paramètres différent. Dans ce cas, le provisionneur de la classe existante doit êtrepd.csi.storage.gke.io
.Déployez la classe de stockage sur votre cluster OpenShift Container Platform à l'aide de la commande
oc
:$ oc describe storageclass csi-gce-pd-cmek
Exemple de sortie
Name: csi-gce-pd-cmek IsDefaultClass: No Annotations: None Provisioner: pd.csi.storage.gke.io Parameters: disk-encryption-kms-key=projects/key-project-id/locations/location/keyRings/ring-name/cryptoKeys/key-name,type=pd-standard AllowVolumeExpansion: true MountOptions: none ReclaimPolicy: Delete VolumeBindingMode: WaitForFirstConsumer Events: none
Créez un fichier nommé
pvc.yaml
qui correspond au nom de l'objet de classe de stockage que vous avez créé à l'étape précédente :kind: PersistentVolumeClaim apiVersion: v1 metadata: name: podpvc spec: accessModes: - ReadWriteOnce storageClassName: csi-gce-pd-cmek resources: requests: storage: 6Gi
NoteSi vous avez marqué la nouvelle classe de stockage comme étant par défaut, vous pouvez omettre le champ
storageClassName
.Appliquez le PVC à votre cluster :
$ oc apply -f pvc.yaml
Obtenez le statut de votre PVC et vérifiez qu'il est créé et lié à un PV nouvellement provisionné :
$ oc get pvc
Exemple de sortie
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE podpvc Bound pvc-e36abf50-84f3-11e8-8538-42010a800002 10Gi RWO csi-gce-pd-cmek 9s
NoteSi le champ
volumeBindingMode
de votre classe de stockage est défini surWaitForFirstConsumer
, vous devez créer un module pour utiliser le PVC avant de pouvoir le vérifier.
Votre PV protégé par CMEK est maintenant prêt à être utilisé avec votre cluster OpenShift Container Platform.
Ressources supplémentaires