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.
|
|
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 |
|---|---|---|---|
|
Oui |
chaîne |
ID du système de fichiers FSx for NetApp ONTAP |
|
Oui |
chaîne |
Pilote de stockage Trident (par exemple, |
|
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.
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
{
"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 |
|---|---|
|
Résultat de la configuration ( |
|
Message d'état ou d'erreur détaillé |
|
Nom de la ressource du configurateur interne |
|
Indique que le StorageClass est géré par Trident |
|
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 :
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
{
"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 |
|---|---|
|
Chaque PV provisionné est un LUN au sein de son propre volume Amazon FSx for NetApp ONTAP. Recommandé pour le stockage bloc. |
|
Chaque PV provisionné est un volume Amazon FSx for NetApp ONTAP complet. Recommandé pour NFS et SMB. |
|
Chaque PV provisionné est un LUN avec un nombre configurable de LUN par Amazon FSx for NetApp ONTAP volume. |
|
Chaque PV provisionné est un qtree, avec un nombre configurable de qtrees par volume Amazon FSx for NetApp ONTAP. |
|
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 tridenttridentbackendconfig.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 tridentNAME 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.
-
Il s'agit d'un objet Kubernetes, utilisez donc
kubectlpour le créer dans Kubernetes.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
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 |
|---|---|---|
|
Toujours 1 |
|
|
Nom du pilote de stockage |
|
|
Nom personnalisé ou le stockage backend |
Nom du pilote + "_" + dataLIF |
|
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 |
"10.0.0.1", "[2001:1234:abcd::fefe]" |
|
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]. |
|
|
Activer la création et la mise à jour automatiques des règles d'export [Booléen]. En utilisant les options |
|
|
Liste des CIDR pour filtrer les adresses IP des nœuds Kubernetes lorsque |
"["0.0.0.0/0", "::/0"]" |
|
Ensemble d'étiquettes arbitraires au format JSON à appliquer aux volumes |
"" |
|
Valeur encodée en Base64 du certificat client. Utilisé pour l'authentification par certificat |
"" |
|
Valeur encodée en Base64 de la clé privée du client. Utilisé pour l'authentification par certificat |
"" |
|
Valeur encodée en Base64 du certificat d'autorité de certification de confiance. Facultatif. Utilisé pour l'authentification par certificat. |
"" |
|
Nom d'utilisateur pour se connecter au cluster ou à la SVM. Utilisé pour l'authentification par identifiants. Par exemple, vsadmin. |
|
|
Mot de passe permettant de se connecter au cluster ou à la SVM. Utilisé pour l'authentification par identifiants. |
|
|
Machine virtuelle de stockage à utiliser |
Dérivé si un LIF de gestion SVM est spécifié. |
|
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. |
|
|
Ne pas spécifier pour Amazon FSx for NetApp ONTAP. Les |
Ne pas utiliser. |
|
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) |
|
Nombre maximal de LUN par volume FlexVol, doit être compris entre 50 et 200. SAN uniquement. |
“100” |
|
Options de débogage à utiliser lors du dépannage. Exemple, {"api":false, "method":true} Ne pas utiliser |
null |
|
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é. |
"" |
|
Configurez la création de volumes NFS ou SMB. Les options sont |
|
|
Nombre maximal de Qtrees par volume FlexVol, doit être compris dans la plage [50, 300] |
|
|
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. |
|
|
Paramètre booléen à utiliser pour les API REST ONTAP. Lorsqu'il est défini sur |
|
|
Vous pouvez spécifier les éléments suivants dans le fichier de configuration pour AWS FSx for ONTAP : - |
|
|
Spécifiez les informations d'identification de la SVM FSx à stocker dans AWS Secrets Manager. - |
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 |
|---|---|---|
|
Allocation d'espace pour les LUNs |
|
|
Mode de réservation d'espace ; "none" (fin) ou "volume" (épais) |
|
|
Stratégie de snapshot à utiliser |
|
|
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. |
"" |
|
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. |
"" |
|
Pourcentage du volume réservé aux snapshots "0" |
Si |
|
Séparer un clone de son parent lors de sa création |
|
|
Activez le chiffrement de volume NetApp (NVE) sur le nouveau volume ; la valeur par défaut est |
|
|
Activez le chiffrement LUKS. Consultez "Utilisez Linux Unified Key Setup (LUKS)". SAN uniquement. |
"" |
|
Politique de hiérarchisation à utiliser |
|
|
Mode pour les nouveaux volumes. Laisser vide pour les volumes SMB. |
"" |
|
Style de sécurité pour les nouveaux volumes. NFS prend en charge |
La valeur par défaut de NFS est |