Chapitre 4. Configuration du stockage persistant
4.1. Stockage persistant à l'aide d'AWS Elastic Block Store
OpenShift Container Platform prend en charge les volumes AWS Elastic Block Store (EBS). Vous pouvez approvisionner votre cluster OpenShift Container Platform avec un stockage persistant en utilisant Amazon EC2.
Le cadre de volume persistant Kubernetes permet aux administrateurs de provisionner un cluster avec un stockage persistant et donne aux utilisateurs un moyen de demander ces ressources sans avoir aucune connaissance de l'infrastructure sous-jacente. Vous pouvez provisionner dynamiquement des volumes AWS EBS. Les volumes persistants ne sont pas liés à un seul projet ou espace de noms ; ils peuvent être partagés à travers le cluster OpenShift Container Platform. Les demandes de volumes persistants sont spécifiques à un projet ou à un espace de noms et peuvent être demandées par les utilisateurs. Vous pouvez définir une clé KMS pour chiffrer les volumes persistants des conteneurs sur AWS.
OpenShift Container Platform utilise par défaut un plug-in in-tree, ou non-Container Storage Interface (CSI) pour provisionner le stockage AWS EBS. 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 de l'ICS doit ê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.
La haute disponibilité du stockage dans l'infrastructure est laissée au fournisseur de stockage sous-jacent.
Pour OpenShift Container Platform, la migration automatique d'AWS EBS in-tree vers le pilote Container Storage Interface (CSI) est disponible en tant que fonctionnalité d'aperçu technologique (TP). Lorsque la migration est activée, les volumes provisionnés à l'aide du pilote in-tree existant sont automatiquement migrés pour utiliser le pilote AWS EBS CSI. Pour plus d'informations, voir la fonctionnalité de migration automatique CSI.
4.1.1. Création de la classe de stockage EBS
Les classes de stockage sont utilisées pour différencier et délimiter les niveaux de stockage et les utilisations. En définissant une classe de stockage, les utilisateurs peuvent obtenir des volumes persistants provisionnés dynamiquement.
4.1.2. Création de la revendication de volume persistant
Conditions préalables
Le stockage doit exister dans l'infrastructure sous-jacente avant de pouvoir être monté en tant que volume dans OpenShift Container Platform.
Procédure
-
Dans la console OpenShift Container Platform, cliquez sur Storage
Persistent Volume Claims. - Dans l'aperçu des réclamations relatives aux volumes persistants, cliquez sur Create Persistent Volume Claim.
Définissez les options souhaitées sur la page qui s'affiche.
- Sélectionnez la classe de stockage précédemment créée dans le menu déroulant.
- Saisissez un nom unique pour la créance de stockage.
- Sélectionner le mode d'accès. Cette sélection détermine l'accès à la lecture et à l'écriture pour l'unité de stockage.
- Définir la taille de la demande de stockage.
- Cliquez sur Create pour créer la demande de volume persistant et générer un volume persistant.
4.1.3. Format du volume
Avant que OpenShift Container Platform ne monte le volume et ne le transmette à un conteneur, il vérifie que le volume contient un système de fichiers tel que spécifié par le paramètre fsType
dans la définition du volume persistant. Si le périphérique n'est pas formaté avec le système de fichiers, toutes les données du périphérique sont effacées et le périphérique est automatiquement formaté avec le système de fichiers donné.
Cette vérification permet d'utiliser des volumes AWS non formatés en tant que volumes persistants, car OpenShift Container Platform les formate avant la première utilisation.
4.1.4. Nombre maximal de volumes EBS sur un nœud
Par défaut, OpenShift Container Platform prend en charge un maximum de 39 volumes EBS attachés à un nœud. Cette limite est cohérente avec les limites de volume AWS. La limite de volume dépend du type d'instance.
En tant qu'administrateur de cluster, vous devez utiliser soit des volumes in-tree, soit des volumes Container Storage Interface (CSI) et leurs classes de stockage respectives, mais jamais les deux types de volumes en même temps. Le nombre maximum de volumes EBS attachés est compté séparément pour les volumes in-tree et CSI, ce qui signifie que vous pouvez avoir jusqu'à 39 volumes EBS de chaque type.
Pour plus d'informations sur l'accès à des options de stockage supplémentaires, telles que les instantanés de volume, qui ne sont pas possibles avec les plug-ins de volume dans l'arborescence, voir AWS Elastic Block Store CSI Driver Operator.
4.1.5. Chiffrer les volumes persistants des conteneurs sur AWS avec une clé KMS
La définition d'une clé KMS pour chiffrer les volumes persistants des conteneurs sur AWS est utile lorsque vous disposez de directives explicites en matière de conformité et de sécurité lors du déploiement sur AWS.
Conditions préalables
- L'infrastructure sous-jacente doit contenir un espace de stockage.
- Vous devez créer une clé KMS client sur AWS.
Procédure
Créer une classe de stockage :
$ cat << EOF | oc create -f - apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: <storage-class-name> 1 parameters: fsType: ext4 2 encrypted: "true" kmsKeyId: keyvalue 3 provisioner: ebs.csi.aws.com reclaimPolicy: Delete volumeBindingMode: WaitForFirstConsumer EOF
- 1
- Spécifie le nom de la classe de stockage.
- 2
- Système de fichiers créé sur des volumes provisionnés.
- 3
- Spécifie le nom complet de la ressource Amazon (ARN) de la clé à utiliser pour chiffrer le volume persistant du conteneur. Si vous ne fournissez pas de clé, mais que le champ
encrypted
est défini surtrue
, la clé KMS par défaut est utilisée. Voir Finding the key ID and key ARN on A WS dans la documentation AWS.
Créez une revendication de volume persistant (PVC) avec la classe de stockage spécifiant la clé KMS :
$ cat << EOF | oc create -f - apiVersion: v1 kind: PersistentVolumeClaim metadata: name: mypvc spec: accessModes: - ReadWriteOnce volumeMode: Filesystem storageClassName: <storage-class-name> resources: requests: storage: 1Gi EOF
Créer des conteneurs de charge de travail pour utiliser le PVC :
$ cat << EOF | oc create -f - kind: Pod metadata: name: mypod spec: containers: - name: httpd image: quay.io/centos7/httpd-24-centos7 ports: - containerPort: 80 volumeMounts: - mountPath: /mnt/storage name: data volumes: - name: data persistentVolumeClaim: claimName: mypvc EOF
4.1.6. Ressources supplémentaires
- Voir AWS Elastic Block Store CSI Driver Operator pour plus d'informations sur l'accès à des options de stockage supplémentaires, telles que les instantanés de volume, qui ne sont pas possibles avec les plugins de volume dans l'arborescence.