Skip to main content
NetApp container solutions
La version française est une traduction automatique. La version anglaise prévaut sur la française en cas de divergence.

Installer NetApp Trident dans un cluster VKS

Contributeurs banum-netapp

Installez NetApp Trident comme provisionneur de stockage dynamique dans votre cluster vSphere Kubernetes Service pour intégrer le stockage NetApp ONTAP à vos charges de travail Kubernetes.

Avant de commencer
  • Assurez-vous que votre cluster ONTAP est configuré et connecté à votre environnement VMware Kubernetes.

  • Assurez-vous que votre cluster VKS dispose des outils iSCSI ou NVMe installés si vos charges de travail utiliseront ces protocoles pour le stockage.

  • Assurez-vous d'avoir kubectl installé sur une machine à partir de laquelle vous pouvez vous connecter au cluster VKS à l'aide du fichier kubeconfig.

    Téléchargement de kubeconfig depuis l'onglet Ressources
Étapes
  1. Installez l’opérateur Trident à l’aide d’un chart Helm en suivant les instructions de la documentation Trident :

    Avant d'exécuter l'installation Helm, créez et étiquetez l' trident`espace de noms. L'étiquette `enforce=privileged est requise car Trident exécute des charges de travail privilégiées. Sans cela, le contrôleur d'admission de la sécurité des pods Kubernetes empêchera le démarrage des pods Trident.

    kubectl create namespace trident
    kubectl label namespace trident pod-security.kubernetes.io/enforce=privileged
    Afficher un exemple
    helm install trident netapp-trident/trident-operator --version 100.2606.0 --namespace trident

    Pour activer la journalisation de débogage, ajoutez --set tridentDebug=true :

    helm install trident netapp-trident/trident-operator --version 100.2606.0 --namespace trident --set tridentDebug=true
    Remarque Vous pouvez également installer Trident manuellement à l'aide de l'opérateur Trident. Consultez la documentation Trident pour connaître la procédure : "Déployez manuellement l’opérateur Trident"

    Assurez-vous d'avoir étiqueté l'espace de noms trident avec les étiquettes de sécurité de pod requises avant d'installer Trident manuellement.

  2. Confirmez que tous les pods Trident sont en cours d'exécution dans le cluster.

    Afficher un exemple
    kubectl get pods -n trident
    Trident installé
    Remarque Si les pods Trident ne démarrent pas et qu'une erreur d' PodSecurity`admission se produit, il est possible que les étiquettes de sécurité des pods n'aient pas été appliquées à l' `trident`espace de noms avant l'installation. Utilisez `--overwrite pour les réappliquer, puis vérifiez que les pods démarrent.
    kubectl label namespace trident pod-security.kubernetes.io/enforce=privileged --overwrite

Préparez les fichiers de configuration du système de stockage et de StorageClass pour votre environnement

  1. Configurez un backend Trident pour ONTAP en définissant les détails de connexion et les paramètres de stockage nécessaires.

  2. Définissez des classes de stockage dans Kubernetes qui correspondent aux backends de stockage NetApp. Ces classes spécifient des paramètres tels que les caractéristiques de performance et les politiques de réplication.

    Définissez les backends Trident et les classes de stockage pour les protocoles suivants, selon les besoins de vos charges de travail :

    • NAS (pilote ontap-nas)

    • NAS Economy (pilote ontap-nas-economy)

    • SAN (pilote ontap-san) pour les protocoles iSCSI, FC ou NVMe

    • SAN Economy (pilote ontap-san-economy) pour iSCSI

      NAS

      Créez un TridentBackendConfig et un StorageClass pour ONTAP NAS afin d'activer le provisionnement de stockage persistant basé sur NFS. La configuration du backend inclut des informations d'identification stockées dans un secret Kubernetes et fait référence à votre ONTAP SVM et à votre LIF de gestion.

      Exemple de secret backend et de fichier de configuration backend utilisant la méthode d'authentification par nom d'utilisateur et mot de passe (enregistrez sous tbc-nas.yaml) :

      # tbc-nas.yaml
      apiVersion: v1
      kind: Secret
      metadata:
        name: tbc-nas-secret
        namespace: trident
      type: Opaque
      data:
        username: "<base64-encoded cluster admin username>"
        password: "<base64-encoded cluster admin password>"
      ---
      apiVersion: trident.netapp.io/v1
      kind: TridentBackendConfig
      metadata:
        name: tbc-nas
        namespace: trident
      spec:
        version: 1
        storageDriverName: ontap-nas
        managementLIF: <ONTAP management LIF>
        backendName: tbc-nas
        svm: <your SVM name>
        storagePrefix: <your prefix for all volume names created using this backend configuration>
        defaults:
          nameTemplate: "{{ .config.StoragePrefix }}_{{ .volume.Namespace }}_{{ .volume.RequestName }}"
        credentials:
          name: tbc-nas-secret

      Exemple de secret backend et de fichier de configuration backend utilisant la méthode d'authentification par certificat client (enregistrez sous tbc-nas.yaml) :

      # tbc-nas.yaml
      apiVersion: v1
      kind: Secret
      metadata:
        name: ontap-nas-secret
        namespace: trident
      type: Opaque
      stringData:
        clientPrivateKey: <client private key value>
      ---
      apiVersion: trident.netapp.io/v1
      kind: TridentBackendConfig
      metadata:
        name: tbc-nas
        namespace: trident
      spec:
        version: 1
        storageDriverName: ontap-nas
        managementLIF: <ONTAP management LIF>
        backendName: tbc-nas
        svm: <your SVM name>
        storagePrefix: <your prefix for all volume names created using this backend configuration>
        credentials:
          name: ontap-nas-secret
        clientCertificate: <client certificate>

      StorageClass definition (enregistrer sous sc-nas.yaml):

      mountOptions est un paramètre optionnel qui spécifie des options de montage supplémentaires pour les volumes NFS. L’ `nconnect`option permet plusieurs connexions TCP parallèles pour un même montage NFS, ce qui peut améliorer les performances pour les charges de travail à haut débit. La valeur par défaut est 1, mais elle peut être augmentée jusqu’à la limite maximale autorisée par le système ONTAP.

ONTAP prend en charge jusqu'à 16 connexions pour un seul montage NFS sur un client compatible nconnect. Trident transmet directement les options de montage aux nœuds de travail Kubernetes, alors choisissez une valeur prise en charge à la fois par le client NFS du nœud de travail et par ONTAP ; l’exemple suivant utilise quatre connexions.

# sc-nas.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: sc-nas
provisioner: csi.trident.netapp.io
parameters:
  backendType: "ontap-nas"
  media: "ssd"
  provisioningType: "thin"
  snapshots: "true"
allowVolumeExpansion: true
mountOptions:
- nconnect=4

Créez un TridentBackendConfig et un StorageClass pour le pilote ONTAP NAS Economy afin d'activer le provisionnement de stockage persistant basé sur NFS à l'aide de qtrees. La configuration du backend inclut des informations d'identification stockées dans un Secret Kubernetes et fait référence à votre ONTAP SVM et à votre LIF de gestion.

Exemple de secret backend et de fichier de configuration backend utilisant la méthode d'authentification par nom d'utilisateur et mot de passe (enregistrez sous tbc-nas-economy.yaml) :

# tbc-nas-economy.yaml
apiVersion: v1
kind: Secret
metadata:
  name: tbc-nas-economy-secret
  namespace: trident
type: Opaque
data:
  username: "<base64-encoded cluster admin username>"
  password: "<base64-encoded cluster admin password>"
---
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
  name: tbc-nas-economy
  namespace: trident
spec:
  version: 1
  storageDriverName: ontap-nas-economy
  managementLIF: <ONTAP management LIF>
  backendName: tbc-nas-eco
  svm: <your SVM name>
  storagePrefix: <your prefix for all volume names created using this backend configuration>
  defaults:
    nameTemplate: "{{ .config.StoragePrefix }}_{{ .volume.Namespace }}_{{ .volume.RequestName }}"
  credentials:
    name: tbc-nas-economy-secret

StorageClass definition (enregistrer sous sc-nas-economy.yaml):

# sc-nas-economy.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: sc-nas-economy
provisioner: csi.trident.netapp.io
parameters:
  backendType: "ontap-nas-economy"
  media: "ssd"
  provisioningType: "thin"
allowVolumeExpansion: true
mountOptions:
- nconnect=4

Créez un TridentBackendConfig et un StorageClass pour ONTAP SAN avec iSCSI afin d'activer le provisionnement de stockage bloc basé sur iSCSI. La configuration du backend utilise le pilote ontap-san et inclut des informations d'identification stockées dans un Secret Kubernetes. Le sanType paramètre utilise par défaut le protocole iSCSI s'il est omis.

Secret backend et fichier de configuration backend utilisant l'authentification par nom d'utilisateur et mot de passe (enregistrer sous tbc-iscsi.yaml) :

# tbc-iscsi.yaml
apiVersion: v1
kind: Secret
metadata:
  name: backend-tbc-ontap-iscsi-secret
  namespace: trident
type: Opaque
data:
  username: "<base64-encoded cluster admin username>"
  password: "<base64-encoded cluster admin password>"
---
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
  name: ontap-iscsi
  namespace: trident
spec:
  version: 1
  storageDriverName: ontap-san
  managementLIF: <ONTAP management LIF>
  backendName: ontap-iscsi
  svm: <your SVM name>
  credentials:
    name: backend-tbc-ontap-iscsi-secret

Secret backend et fichier de configuration backend utilisant la méthode d'authentification par certificat client (enregistrez sous tbc-iscsi.yaml) :

# tbc-iscsi.yaml
apiVersion: v1
kind: Secret
metadata:
  name: backend-tbc-ontap-iscsi-secret
  namespace: trident
type: Opaque
stringData:
  clientPrivateKey: <client private key>
---
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
  name: ontap-iscsi
  namespace: trident
spec:
  version: 1
  storageDriverName: ontap-san
  managementLIF: <ONTAP management LIF>
  backendName: ontap-iscsi
  svm: <your SVM name>
  credentials:
    name: backend-tbc-ontap-iscsi-secret
  clientCertificate: <client certificate>

StorageClass definition (enregistrer sous sc-iscsi.yaml):

# sc-iscsi.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: sc-iscsi
provisioner: csi.trident.netapp.io
parameters:
  backendType: "ontap-san"
  media: "ssd"
  provisioningType: "thin"
  fsType: ext4
  snapshots: "true"
allowVolumeExpansion: true

Créez un TridentBackendConfig et un StorageClass pour ONTAP SAN avec NVMe afin d’activer le provisionnement de stockage bloc basé sur NVMe. La configuration du backend utilise le pilote ontap-san et inclut des informations d’identification stockées dans un Secret Kubernetes. Le sanType paramètre doit être défini sur nvme.

Secret backend et fichier de configuration backend utilisant l'authentification par nom d'utilisateur et mot de passe (enregistrer sous tbc-nvme.yaml) :

# tbc-nvme.yaml
apiVersion: v1
kind: Secret
metadata:
  name: backend-tbc-ontap-nvme-secret
  namespace: trident
type: Opaque
data:
  username: "<base64-encoded cluster admin username>"
  password: "<base64-encoded cluster admin password>"
---
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
  name: ontap-nvme
  namespace: trident
spec:
  version: 1
  storageDriverName: ontap-san
  sanType: nvme
  managementLIF: <ONTAP management LIF>
  backendName: ontap-nvme
  svm: <your SVM name>
  credentials:
    name: backend-tbc-ontap-nvme-secret

Secret backend et fichier de configuration backend utilisant la méthode d'authentification par certificat client (enregistrez sous tbc-nvme.yaml) :

# tbc-nvme.yaml
apiVersion: v1
kind: Secret
metadata:
  name: backend-tbc-ontap-nvme-secret
  namespace: trident
type: Opaque
stringData:
  clientPrivateKey: <client private key>
---
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
  name: ontap-nvme
  namespace: trident
spec:
  version: 1
  storageDriverName: ontap-san
  sanType: nvme
  managementLIF: <ONTAP management LIF>
  backendName: ontap-nvme
  svm: <your SVM name>
  credentials:
    name: backend-tbc-ontap-nvme-secret
  clientCertificate: <client certificate>

StorageClass definition (enregistrer sous sc-nvme.yaml):

# sc-nvme.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: sc-nvme
provisioner: csi.trident.netapp.io
parameters:
  backendType: "ontap-san"
  media: "ssd"
  provisioningType: "thin"
  fsType: ext4
  snapshots: "true"
allowVolumeExpansion: true

Consultez la documentation Trident pour obtenir des exemples supplémentaires de fichiers YAML et des informations sur les modes d'accès et les modes de volume pris en charge par les pilotes SAN et NAS.

Créez un fichier de configuration VolumeSnapshotClass

Créez une définition VolumeSnapshotClass. Cette configuration active les opérations basées sur les instantanés pour les volumes persistants.

VolumeSnapshotClass definition (enregistrer sous snapshot-class.yaml):

# snapshot-class.yaml
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshotClass
metadata:
  name: trident-snapshotclass
driver: csi.trident.netapp.io
deletionPolicy: Retain

Appliquez les fichiers de configuration à votre cluster

Appliquez les fichiers de configuration que vous avez créés lors des étapes précédentes au cluster vSphere Kubernetes Service en utilisant kubectl. Cela crée les secrets nécessaires, les configurations backend, les classes de stockage et la classe de snapshot dans votre cluster.

Étapes
  1. Appliquez les fichiers TridentBackendConfig et StorageClass pour chaque protocole que vous avez configuré.

    kubectl apply -f tbc-nas.yaml -n trident
    kubectl apply -f sc-nas.yaml
    
    kubectl apply -f tbc-nas-economy.yaml -n trident
    kubectl apply -f sc-nas-economy.yaml
    
    kubectl apply -f tbc-iscsi.yaml -n trident
    kubectl apply -f sc-iscsi.yaml
    
    kubectl apply -f tbc-nvme.yaml -n trident
    kubectl apply -f sc-nvme.yaml
    
    kubectl apply -f snapshot-class.yaml
  2. Vérifiez que les ressources ont été créées avec succès.

    Vérifiez les objets TridentBackendConfig :

    kubectl get tbc -n trident

    Vérifiez les objets StorageClass :

    kubectl get storageclass

    Vérifiez VolumeSnapshotClass :

    kubectl get volumesnapshotclass

Définissez les classes de stockage et d'instantanés Trident par défaut

Définissez les classes StorageClass et VolumeSnapshotClass de Trident comme valeurs par défaut dans le cluster vSphere Kubernetes Service.

Étapes
  1. Définissez le Trident StorageClass par défaut.

    Définissez un StorageClass pris en charge par Trident comme valeur par défaut du cluster afin que les PersistentVolumeClaims l'utilisent automatiquement lorsqu'aucune classe de stockage n'est spécifiée.

    Assurez-vous qu'une seule StorageClass soit définie par défaut. Si une autre StorageClass est déjà définie par défaut, définissez son annotation sur false.

    Depuis l'interface de ligne de commande :

    kubectl patch storageclass <storage class name> -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
  2. Définissez la VolumeSnapshotClass Trident par défaut.

    Définissez un VolumeSnapshotClass pris en charge par Trident comme valeur par défaut du cluster afin d’activer les opérations basées sur les instantanés pour les volumes persistants. Cela garantit que les VolumeSnapshots utilisent automatiquement le pilote CSI Trident lorsqu’aucune classe d’instantané n’est spécifiée.

    Assurez-vous qu'une seule VolumeSnapshotClass soit définie par défaut. Si une autre VolumeSnapshotClass est déjà définie par défaut, définissez son annotation sur false.

    Depuis l'interface de ligne de commande :

    kubectl patch volumesnapshotclass <snapshot class name> --type=merge -p '{"metadata":{"annotations":{"snapshot.storage.kubernetes.io/is-default-class":"true"}}}'

Utilisez les revendications de volumes persistants Kubernetes pour demander du stockage pour les charges de travail

Trident provisionne automatiquement les volumes nécessaires à partir du stockage NetApp backend. Consultez "Déployez des charges de travail avec un stockage persistant" pour des exemples de déploiement d'une charge de travail avec des PVC dans un cluster VKS.