Skip to main content
Une version plus récente de ce produit est disponible.
La version française est une traduction automatique. La version anglaise prévaut sur la française en cas de divergence.

Configurer une classe de stockage

La "Objet Kubernetes StorageClass" identifie un provisionneur et lui indique comment provisionner les volumes. Cette section montre comment configurer un objet Kubernetes StorageClass qui spécifie Trident comme provisionneur.

Créer un objet StorageClass

Lorsque vous créez un StorageClass pour FSx for ONTAP, Trident créera automatiquement la configuration backend.

Remarque Si vous souhaitez configurer manuellement le stockage backend, veuillez vous référer à la section [create-a-kubernetes-storageclass-without-automatic-backend-configuration] pour savoir comment créer séparément le backend Trident et la classe de stockage.

Spécifiez les paramètres requis StorageClass

Les trois paramètres suivants doivent être définis lors de la création d'un StorageClass :

Paramètre Obligatoire Type Description

fsxFilesystemID

Oui

chaîne

ID du système de fichiers FSx for NetApp ONTAP

storageDriverName

Oui

chaîne

Pilote de stockage Trident (par exemple, ontap-nas ou ontap-san)

credentialsName

Oui

chaîne

Nom du secret Kubernetes qui contient les informations d'identification FSx for ONTAP

Spécifiez les paramètres optionnels

Vous pouvez transmettre des paramètres backend optionnels via le StorageClass. Définissez toutes les valeurs optionnelles sous forme de chaînes dans la section StorageClass parameters. Pour une liste complète des paramètres du backend, voir : "Configuration du backend FSx for NetApp ONTAP".

Exemples de fichiers de configuration StorageClass.

L'exemple suivant montre un StorageClass qui déclenche une configuration automatique du backend.

YAML
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: ontap-fsx-demo
  annotations:
    description: "Demo StorageClass for FSx for NetApp ONTAP"
provisioner: csi.trident.netapp.io
parameters:
  fsxFilesystemID: "fs-0abc123"
  storageDriverName: "ontap-nas"
  credentialsName: trident-fsx-credentials
allowVolumeExpansion: true
reclaimPolicy: Delete
volumeBindingMode: Immediate
JSON
{
  "apiVersion": "storage.k8s.io/v1",
  "kind": "StorageClass",
  "metadata": {
    "name": "ontap-fsx-demo",
    "annotations": {
      "description": "Demo StorageClass for FSx for NetApp ONTAP"
    }
  },
  "provisioner": "csi.trident.netapp.io",
  "parameters": {
    "fsxFilesystemID": "fs-0abc123",
    "storageDriverName": "ontap-nas",
    "credentialsName": "trident-fsx-credentials"
  },
  "allowVolumeExpansion": true,
  "reclaimPolicy": "Delete",
  "volumeBindingMode": "Immediate"
}

Créez le StorageClass

Une fois que vous avez créé votre fichier de configuration, exécutez la commande suivante pour créer la classe de stockage.

kubectl create -f storage-class-ontapnas.yaml

Vous devriez maintenant voir une classe de stockage basic-csi dans Kubernetes et Trident, et Trident devrait avoir découvert les pools sur le backend.

kubectl get sc basic-csi
NAME         PROVISIONER             AGE
basic-csi    csi.trident.netapp.io   15h

Après avoir appliqué le StorageClass, Trident crée automatiquement le backend. Vous pouvez ensuite créer des PersistentVolumeClaims qui référencent ce StorageClass.

Vérifier l'état de la configuration du backend

Trident enregistre le résultat de la création du backend dans les annotations StorageClass.

Annotation Description

trident.netapp.io/configuratorStatus

Résultat de la configuration (Success ou Failure)

trident.netapp.io/configuratorMessage

Message d'état ou d'erreur détaillé

trident.netapp.io/configuratorName

Nom de la ressource du configurateur interne

trident.netapp.io/managed

Indique que le StorageClass est géré par Trident

trident.netapp.io/additionalStoragePools

Pools de stockage créés pour ce backend

Pour vérifier l'état, exécutez :

kubectl get storageclass ontap-fsx-demo -o yaml

Confirmez que trident.netapp.io/configuratorStatus est défini sur Success. Si la valeur est Failure, examinez trident.netapp.io/configuratorMessage pour l’erreur.

Ajouter des systèmes de fichiers FSxN supplémentaires

Si vous avez besoin de stockage supplémentaire tout en continuant à utiliser le même StorageClass, ajoutez des identifiants de système de fichiers FSxN supplémentaires.

Modifiez le StorageClass et ajoutez l'annotation suivante :

metadata:
  annotations:
    trident.netapp.io/additionalFsxNFileSystemID: '["fs-xxxxxxxxxxxxxxxxxx"]'

Une fois la modification appliquée, Trident met à jour la configuration du backend et met à jour les annotations StorageClass.

Considérations et limitations opérationnelles

  • La suppression d’un StorageClass qui utilise la configuration automatique du backend supprime généralement le backend Trident associé. Cela peut perturber la connectivité du stockage et interrompre les charges de travail en cours. Validez l’impact avant de supprimer un StorageClass géré.

  • La configuration automatique du backend est prise en charge uniquement pour AWS FSx pour NetApp ONTAP.

Créer un StorageClass Kubernetes sans configuration automatique du backend

Si vous souhaitez créer le backend Trident et le StorageClass séparément, suivez ces étapes.

Comprendre le fonctionnement de la configuration automatique du backend

Trident déduit la configuration du backend à partir de la définition de la StorageClass. Lorsque vous appliquez la StorageClass, Trident valide les paramètres requis, crée le backend et annote la StorageClass avec le statut.

Trident crée le VolumeSnapshotClass une seule fois. Trident réutilise le même VolumeSnapshotClass pour les StorageClasses suivants.

Créer le backend Trident

Pour créer un backend Trident, vous devez créer un fichier de configuration au format JSON ou YAML. Le fichier doit spécifier le type de stockage souhaité (NAS ou SAN), le système de fichiers, la SVM à utiliser et la méthode d'authentification. L'exemple suivant montre comment définir un stockage basé sur NAS et utiliser un secret AWS pour stocker les informations d'identification de la SVM que vous souhaitez utiliser :

YAML
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
  name: backend-tbc-ontap-nas
  namespace: trident
spec:
  version: 1
  storageDriverName: ontap-nas
  backendName: tbc-ontap-nas
  svm: svm-name
  aws:
    fsxFilesystemID: fs-xxxxxxxxxx
  credentials:
    name: "arn:aws:secretsmanager:us-west-2:xxxxxxxx:secret:secret-name"
    type: awsarn
JSON
{
  "apiVersion": "trident.netapp.io/v1",
  "kind": "TridentBackendConfig",
  "metadata": {
    "name": "backend-tbc-ontap-nas"
    "namespace": "trident"
  },
  "spec": {
    "version": 1,
    "storageDriverName": "ontap-nas",
    "backendName": "tbc-ontap-nas",
    "svm": "svm-name",
    "aws": {
      "fsxFilesystemID": "fs-xxxxxxxxxx"
    },
    "managementLIF": null,
    "credentials": {
      "name": "arn:aws:secretsmanager:us-west-2:xxxxxxxx:secret:secret-name",
      "type": "awsarn"
    }
  }
}

Détails du pilote FSx for ONTAP

Vous pouvez intégrer Trident à Amazon FSx for NetApp ONTAP à l'aide des pilotes suivants :

Nom du pilote Description

ontap-san

Chaque PV provisionné est un LUN au sein de son propre volume Amazon FSx for NetApp ONTAP. Recommandé pour le stockage bloc.

ontap-nas

Chaque PV provisionné est un volume Amazon FSx for NetApp ONTAP complet. Recommandé pour NFS et SMB.

ontap-san-economy

Chaque PV provisionné est un LUN avec un nombre configurable de LUN par Amazon FSx for NetApp ONTAP volume.

ontap-nas-economy

Chaque PV provisionné est un qtree, avec un nombre configurable de qtrees par volume Amazon FSx for NetApp ONTAP.

ontap-nas-flexgroup

Chaque PV provisionné est un volume Amazon FSx for NetApp ONTAP FlexGroup complet.

Pour plus de détails sur le conducteur, consultez "Pilotes NAS" et "Pilotes SAN".

Créer le backend

Après avoir créé le fichier de configuration, exécutez les commandes suivantes pour créer et valider la configuration du backend Trident (TBC) :

  • Créez une configuration backend Trident (TBC) à partir d'un fichier yaml et exécutez la commande suivante :

    kubectl create -f backendconfig.yaml -n trident
    tridentbackendconfig.trident.netapp.io/backend-tbc-ontap-nas created
  • Vérifiez que la configuration du backend trident (TBC) a été créée avec succès :

    Kubectl get tbc -n trident
    NAME                         BACKEND NAME         BACKEND UUID                           PHASE   STATUS
    
    backend-tbc-ontap-nas        tbc-ontap-nas        933e0071-66ce-4324-b9ff-f96d916ac5e9   Bound   Success

Pour plus d'informations sur les autres options de configuration, consultez la [Backend-advanced-configuration-and-examples] section ci-dessous.

Configurer une classe de stockage sans configuration automatique du backend

Voici des exemples de configurations de classes de stockage à utiliser avec Trident et FSx pour ONTAP.

Classe de stockage pour NFS

Vous pouvez utiliser cet exemple pour configurer StorageClass pour des volumes utilisant NFS (reportez-vous à la section Attributs Trident ci-dessous pour la liste complète des attributs) :

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: ontap-gold
provisioner: csi.trident.netapp.io
parameters:
  backendType: "ontap-nas"
  provisioningType: "thin"
  snapshots: "true"

Classe de stockage pour iSCSI

Utilisez cet exemple pour configurer StorageClass pour des volumes utilisant iSCSI :

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: ontap-gold
provisioner: csi.trident.netapp.io
parameters:
  backendType: "ontap-san"
  provisioningType: "thin"
  snapshots: "true"

Classe de stockage utilisant NFSv3 et AWS Bottlerocket

Pour provisionner des volumes NFSv3 sur AWS Bottlerocket, ajoutez les mountOptions requis à la classe de stockage :

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: ontap-gold
provisioner: csi.trident.netapp.io
parameters:
  backendType: "ontap-nas"
  media: "ssd"
  provisioningType: "thin"
  snapshots: "true"
mountOptions:
  - nfsvers=3
  - nolock

Attributs de Trident StorageClass

Ces paramètres déterminent quels pools de stockage gérés par Trident doivent être utilisés pour provisionner des volumes d'un type donné.

Attribut Type Valeurs Offre Demande Soutenu par

médias1

chaîne

hdd, hybride, ssd

Le pool contient des médias de ce type ; hybride signifie les deux

Type de média spécifié

ontap-nas, ontap-nas-economy, ontap-nas-flexgroup, ontap-san, solidfire-san

provisioningType

chaîne

mince, épais

Pool prend en charge cette méthode de provisionnement

Méthode de provisionnement spécifiée

épais : all ontap ; mince : all ontap & solidfire-san

backendType

chaîne

ontap-nas, ontap-nas-economy, ontap-nas-flexgroup, ontap-san, solidfire-san, azure-netapp-files, ontap-san-economy

Pool appartient à ce type de backend

Backend spécifié

Tous les drivers

instantanés

bool

vrai, faux

Pool prend en charge les volumes avec snapshots

Volume avec instantanés activés

ontap-nas, ontap-san, solidfire-san

clones

bool

vrai, faux

Pool prend en charge le clonage des volumes

Volume avec clones activés

ontap-nas, ontap-san, solidfire-san

chiffrement

bool

vrai, faux

Pool prend en charge les volumes chiffrés

Volume avec chiffrement activé

ontap-nas, ontap-nas-economy, ontap-nas-flexgroups, ontap-san

Op E/S par sec

int

entier positif

Pool est capable de garantir des IOPS dans cette plage

Volume garanti ces IOPS

solidfire-san

1 : Non pris en charge par ONTAP Select ou les systèmes FSx for ONTAP

Consultez "Objets Kubernetes et Trident" pour plus de détails sur la manière dont les classes de stockage interagissent avec le PersistentVolumeClaim et les paramètres permettant de contrôler la façon dont Trident provisionne les volumes.

Créer la classe de stockage

Une fois que vous avez configuré le StorageClass, vous pouvez le créer dans Kubernetes.

Étapes
  1. Il s'agit d'un objet Kubernetes, utilisez donc kubectl pour le créer dans Kubernetes.

    kubectl create -f storage-class-ontapnas.yaml
  2. Vous devriez maintenant voir une classe de stockage basic-csi dans Kubernetes et Trident, et Trident devrait avoir découvert les pools sur le backend.

    kubectl get sc basic-csi
NAME         PROVISIONER             AGE
basic-csi    csi.trident.netapp.io   15h

Provisionner des volumes SMB

Vous pouvez provisionner des volumes SMB à l'aide du ontap-nas driver. Cependant, pour ce faire, vous devez effectuer ces étapes : "Préparez-vous à provisionner des volumes SMB".

Configuration avancée du backend et exemples

Consultez le tableau suivant pour les options de configuration du backend :

Paramètre Description Exemple

version

Toujours 1

storageDriverName

Nom du pilote de stockage

ontap-nas, ontap-nas-economy, ontap-nas-flexgroup, ontap-san, ontap-san-economy

backendName

Nom personnalisé ou le stockage backend

Nom du pilote + "_" + dataLIF

managementLIF

Adresse IP d’un cluster ou d’une LIF de gestion SVM. Un nom de domaine complet (FQDN) peut être spécifié. Il est possible de configurer l’utilisation d’adresses IPv6 si Trident a été installé avec l’option IPv6. Les adresses IPv6 doivent être définies entre crochets, par exemple : [28e8:d9fb:a825:b7bf:69a8:d02f:9e7b:3555]. Si vous fournissez le fsxFilesystemID sous le champ aws, il n’est pas nécessaire de fournir le managementLIF car Trident récupère les informations SVM managementLIF depuis AWS. Vous devez donc fournir les identifiants d’un utilisateur sous la SVM (par exemple : vsadmin) et l’utilisateur doit avoir le rôle vsadmin.

"10.0.0.1", "[2001:1234:abcd::fefe]"

dataLIF

Adresse IP de l’interface logique de protocole (LIF). Pilotes ONTAP NAS : NetApp recommande de spécifier dataLIF. Si elle n’est pas fournie, Trident récupère les dataLIF depuis la SVM. Vous pouvez spécifier un nom de domaine complet (FQDN) à utiliser pour les opérations de montage NFS, ce qui vous permet de créer un DNS à répartition de charge (round-robin) entre plusieurs dataLIF. Peut être modifié après la configuration initiale. Pilotes ONTAP SAN : ne pas spécifier pour iSCSI. Trident utilise ONTAP Selective LUN Map pour découvrir les LIF iSCSI nécessaires à l’établissement d’une session multipath. Un avertissement est généré si dataLIF est explicitement défini. Il est possible de configurer l’utilisation d’adresses IPv6 si Trident a été installé avec l’option IPv6. Les adresses IPv6 doivent être définies entre crochets, par exemple : [28e8:d9fb:a825:b7bf:69a8:d02f:9e7b:3555].

autoExportPolicy

Activer la création et la mise à jour automatiques des règles d'export [Booléen]. En utilisant les options autoExportPolicy et autoExportCIDRs, Trident peut gérer les règles d'export automatiquement.

false

autoExportCIDRs

Liste des CIDR pour filtrer les adresses IP des nœuds Kubernetes lorsque autoExportPolicy est activé. En utilisant les options autoExportPolicy et autoExportCIDRs, Trident peut gérer les règles d'export automatiquement.

"["0.0.0.0/0", "::/0"]"

labels

Ensemble d'étiquettes arbitraires au format JSON à appliquer aux volumes

""

clientCertificate

Valeur encodée en Base64 du certificat client. Utilisé pour l'authentification par certificat

""

clientPrivateKey

Valeur encodée en Base64 de la clé privée du client. Utilisé pour l'authentification par certificat

""

trustedCACertificate

Valeur encodée en Base64 du certificat d'autorité de certification de confiance. Facultatif. Utilisé pour l'authentification par certificat.

""

username

Nom d'utilisateur pour se connecter au cluster ou à la SVM. Utilisé pour l'authentification par identifiants. Par exemple, vsadmin.

password

Mot de passe permettant de se connecter au cluster ou à la SVM. Utilisé pour l'authentification par identifiants.

svm

Machine virtuelle de stockage à utiliser

Dérivé si un LIF de gestion SVM est spécifié.

storagePrefix

Préfixe utilisé lors du provisionnement de nouveaux volumes dans la SVM. Ne peut pas être modifié après création. Pour mettre à jour ce paramètre, vous devrez créer un nouveau backend.

trident

limitAggregateUsage

Ne pas spécifier pour Amazon FSx for NetApp ONTAP. Les fsxadmin et vsadmin fournis ne contiennent pas les autorisations requises pour récupérer l'utilisation agrégée et la limiter à l'aide de Trident.

Ne pas utiliser.

limitVolumeSize

L'approvisionnement échoue si la taille du volume demandée dépasse cette valeur. Limite également la taille maximale des volumes qu'il gère pour les qtrees et les LUN, et l' `qtreesPerFlexvol`option permet de personnaliser le nombre maximal de qtrees par volume FlexVol

"" (non appliqué par défaut)

lunsPerFlexvol

Nombre maximal de LUN par volume FlexVol, doit être compris entre 50 et 200. SAN uniquement.

“100”

debugTraceFlags

Options de débogage à utiliser lors du dépannage. Exemple, {"api":false, "method":true} Ne pas utiliser debugTraceFlags sauf si vous effectuez un dépannage et avez besoin d’un journal détaillé.

null

nfsMountOptions

Liste d'options de montage NFS séparées par des virgules. Les options de montage pour les volumes persistants Kubernetes sont généralement spécifiées dans les classes de stockage, mais si aucune option de montage n'est spécifiée dans une classe de stockage, Trident utilisera les options de montage spécifiées dans le fichier de configuration du backend de stockage. Si aucune option de montage n'est spécifiée ni dans la classe de stockage ni dans le fichier de configuration, Trident n'appliquera aucune option de montage au volume persistant associé.

""

nasType

Configurez la création de volumes NFS ou SMB. Les options sont nfs, smb ou null. Doit être défini sur smb pour les volumes SMB. La valeur null correspond par défaut à des volumes NFS.

nfs

qtreesPerFlexvol

Nombre maximal de Qtrees par volume FlexVol, doit être compris dans la plage [50, 300]

"200"

smbShare

Vous pouvez spécifier l'un des éléments suivants : le nom d'un partage SMB créé à l'aide de la console de gestion Microsoft ou de l'interface de ligne de commande ONTAP, ou un nom permettant à Trident de créer le partage SMB. Ce paramètre est requis pour les backends Amazon FSx for ONTAP.

smb-share

useREST

Paramètre booléen à utiliser pour les API REST ONTAP. Lorsqu'il est défini sur true, Trident utilisera les API REST ONTAP pour communiquer avec le backend. Cette fonctionnalité nécessite ONTAP 9.11.1 ou une version ultérieure. De plus, le rôle de connexion ONTAP utilisé doit avoir accès à l'application ontap. Cela est satisfait par les rôles prédéfinis vsadmin et cluster-admin.

false

aws

Vous pouvez spécifier les éléments suivants dans le fichier de configuration pour AWS FSx for ONTAP : - fsxFilesystemID : Spécifiez l'ID du système de fichiers AWS FSx. - apiRegion : Nom de la région de l'API AWS. - apikey : Clé d'API AWS. - secretKey : Clé secrète AWS.



""
""
""

credentials

Spécifiez les informations d'identification de la SVM FSx à stocker dans AWS Secrets Manager. - name : Nom de ressource Amazon (ARN) du secret, qui contient les informations d'identification de la SVM. - type : Définissez sur awsarn. Consultez "Créer un secret AWS Secrets Manager" pour plus d'informations.

Options de configuration backend pour le provisionnement des volumes

Vous pouvez contrôler le provisionnement par défaut à l'aide de ces options dans la section defaults de la configuration. Pour un exemple, consultez les exemples de configuration ci-dessous.

Paramètre Description Défaut

spaceAllocation

Allocation d'espace pour les LUNs

true

spaceReserve

Mode de réservation d'espace ; "none" (fin) ou "volume" (épais)

none

snapshotPolicy

Stratégie de snapshot à utiliser

none

qosPolicy

Groupe de règles QoS à attribuer aux volumes créés. Choisissez l’un des qosPolicy ou adaptiveQosPolicy par pool de stockage ou backend. L'utilisation des groupes de règles QoS avec Trident requiert ONTAP 9.8 ou une version ultérieure. Vous devez utiliser un groupe de règles QoS non partagé et vous assurer que le groupe de règles est appliqué individuellement à chaque composant. Un groupe de règles QoS partagé impose une limite au débit total de toutes les charges de travail.

""

adaptiveQosPolicy

Groupe de règles QoS adaptatives à attribuer aux volumes créés. Choisissez l’un des qosPolicy ou adaptiveQosPolicy par pool de stockage ou backend. Non pris en charge par ontap-nas-economy.

""

snapshotReserve

Pourcentage du volume réservé aux snapshots "0"

Si snapshotPolicy est none, `else`""

splitOnClone

Séparer un clone de son parent lors de sa création

false

encryption

Activez le chiffrement de volume NetApp (NVE) sur le nouveau volume ; la valeur par défaut est false. NVE doit être sous licence et activé sur le cluster pour utiliser cette option. Si NAE est activé sur le backend, tout volume provisionné dans Trident sera activé pour NAE. Pour plus d'informations, consultez : "Comment Trident fonctionne avec NVE et NAE".

false

luksEncryption

Activez le chiffrement LUKS. Consultez "Utilisez Linux Unified Key Setup (LUKS)". SAN uniquement.

""

tieringPolicy

Politique de hiérarchisation à utiliser none

unixPermissions

Mode pour les nouveaux volumes. Laisser vide pour les volumes SMB.

""

securityStyle

Style de sécurité pour les nouveaux volumes. NFS prend en charge mixed et unix styles de sécurité. SMB prend en charge mixed et ntfs styles de sécurité.

La valeur par défaut de NFS est unix. La valeur par défaut de SMB est ntfs.