La version française est une traduction automatique. La version anglaise prévaut sur la française en cas de divergence.

Préparation

Contributeurs

Découvrez comment vous préparer à configurer un système ONTAP backend avec les pilotes SAN ONTAP. Pour tous les systèmes back-end ONTAP, Astra Trident requiert au moins un agrégat affecté à la SVM.

N’oubliez pas que vous pouvez également exécuter plusieurs pilotes et créer des classes de stockage qui pointent vers l’un ou l’autre. Par exemple, vous pouvez configurer un san-dev classe qui utilise le ontap-san conducteur et a san-default classe qui utilise le ontap-san-economy une seule.

Tous vos nœuds workers Kubernetes doivent avoir installé les outils iSCSI appropriés. Voir "ici" pour en savoir plus.

Authentification

Astra Trident propose deux modes d’authentification d’un système back-end ONTAP.

  • Basé sur les informations d’identification : nom d’utilisateur et mot de passe pour un utilisateur ONTAP disposant des autorisations requises. Il est recommandé d’utiliser un rôle de connexion de sécurité prédéfini, par exemple admin ou vsadmin Pour garantir une compatibilité maximale avec les versions ONTAP.

  • Basé sur des certificats : Astra Trident peut également communiquer avec un cluster ONTAP à l’aide d’un certificat installé sur le système back-end. Dans ce cas, la définition backend doit contenir des valeurs encodées Base64 du certificat client, de la clé et du certificat d’autorité de certification de confiance, le cas échéant (recommandé).

Les utilisateurs ont également la possibilité de mettre à jour les systèmes back-end existants, en choisissant de passer d’un système basé sur les identifiants à un système basé sur les certificats, et inversement. Si les deux identifiants et certificats sont fournis, Astra Trident utilisera par défaut les certificats tout en émettant un avertissement pour supprimer les identifiants de la définition du back-end.

Activer l’authentification basée sur les informations d’identification

Astra Trident nécessite les identifiants d’un administrateur SVM-scoped/cluster-scoped pour communiquer avec le ONTAP backend. Il est recommandé d’utiliser des rôles standard prédéfinis tels que admin ou vsadmin. Il est ainsi possible d’assurer une compatibilité avec les futures versions d’ONTAP et d’exposer les API de fonctionnalités à utiliser avec les futures versions d’Astra Trident. Un rôle de connexion de sécurité personnalisé peut être créé et utilisé avec Astra Trident, mais il n’est pas recommandé.

Voici un exemple de définition du back-end :

{
  "version": 1,
  "backendName": "ExampleBackend",
  "storageDriverName": "ontap-san",
  "managementLIF": "10.0.0.1",
  "dataLIF": "10.0.0.2",
  "svm": "svm_nfs",
  "username": "vsadmin",
  "password": "secret",
}

Gardez à l’esprit que la définition du back-end est le seul endroit où les informations d’identification sont stockées en texte brut. Une fois le système backend créé, les noms d’utilisateur/mots de passe sont codés avec Base64 et stockés sous forme de secrets Kubernetes. La création/la conversion d’un back-end est la seule étape qui nécessite la connaissance des informations d’identification. Il s’agit donc d’une opération uniquement administrative, qui doit être effectuée par l’administrateur Kubernetes/du stockage.

Activez l’authentification basée sur les certificats

Les systèmes back-end, nouveaux et existants, peuvent utiliser un certificat et communiquer avec le système back-end ONTAP. Trois paramètres sont requis dans la définition du back-end.

  • ClientCertificate : valeur encodée en Base64 du certificat client.

  • ClientPrivateKey : valeur encodée en Base64 de la clé privée associée.

  • TrustedCACertificate : valeur encodée Base64 du certificat CA de confiance. Si vous utilisez une autorité de certification approuvée, ce paramètre doit être fourni. Ceci peut être ignoré si aucune autorité de certification approuvée n’est utilisée.

Un flux de travail type comprend les étapes suivantes.

Étapes
  1. Générez un certificat client et une clé. Lors de la génération, définissez le nom commun (CN) sur l’utilisateur ONTAP pour qu’il s’authentifie.

    openssl req -x509 -nodes -days 1095 -newkey rsa:2048 -keyout k8senv.key -out k8senv.pem -subj "/C=US/ST=NC/L=RTP/O=NetApp/CN=admin"
  2. Ajoutez un certificat d’autorité de certification de confiance au cluster ONTAP. Il se peut déjà que l’administrateur de stockage gère cet espace. Ignorer si aucune autorité de certification approuvée n’est utilisée.

    security certificate install -type server -cert-name <trusted-ca-cert-name> -vserver <vserver-name>
    ssl modify -vserver <vserver-name> -server-enabled true -client-enabled true -common-name <common-name> -serial <SN-from-trusted-CA-cert> -ca <cert-authority>
  3. Installez le certificat client et la clé (à partir de l’étape 1) sur le cluster ONTAP.

    security certificate install -type client-ca -cert-name <certificate-name> -vserver <vserver-name>
    security ssl modify -vserver <vserver-name> -client-enabled true
  4. Vérifiez que le rôle de connexion de sécurité ONTAP est pris en charge cert methode d’authentification.

    security login create -user-or-group-name admin -application ontapi -authentication-method cert
    security login create -user-or-group-name admin -application http -authentication-method cert
  5. Testez l’authentification à l’aide d’un certificat généré. Remplacer <ONTAP Management LIF> et <vserver name> par Management LIF IP et SVM name.

    curl -X POST -Lk https://<ONTAP-Management-LIF>/servlets/netapp.servlets.admin.XMLrequest_filer --key k8senv.key --cert ~/k8senv.pem -d '<?xml version="1.0" encoding="UTF-8"?><netapp xmlns="http://www.netapp.com/filer/admin" version="1.21" vfiler="<vserver-name>"><vserver-get></vserver-get></netapp>'
  6. Encodez le certificat, la clé et le certificat CA de confiance avec Base64.

    base64 -w 0 k8senv.pem >> cert_base64
    base64 -w 0 k8senv.key >> key_base64
    base64 -w 0 trustedca.pem >> trustedca_base64
  7. Créez le back-end à l’aide des valeurs obtenues à partir de l’étape précédente.

    $ cat cert-backend.json
    {
    "version": 1,
    "storageDriverName": "ontap-san",
    "backendName": "SanBackend",
    "managementLIF": "1.2.3.4",
    "dataLIF": "1.2.3.8",
    "svm": "vserver_test",
    "clientCertificate": "Faaaakkkkeeee...Vaaalllluuuueeee",
    "clientPrivateKey": "LS0tFaKE...0VaLuES0tLS0K",
    "trustedCACertificate": "QNFinfO...SiqOyN",
    "storagePrefix": "myPrefix_"
    }
    
    $ tridentctl create backend -f cert-backend.json -n trident
    +------------+----------------+--------------------------------------+--------+---------+
    |    NAME    | STORAGE DRIVER |                 UUID                 | STATE  | VOLUMES |
    +------------+----------------+--------------------------------------+--------+---------+
    | SanBackend | ontap-san      | 586b1cd5-8cf8-428d-a76c-2872713612c1 | online |       0 |
    +------------+----------------+--------------------------------------+--------+---------+

Mettre à jour les méthodes d’authentification ou faire pivoter les informations d’identification

Vous pouvez mettre à jour un back-end existant pour utiliser une méthode d’authentification différente ou pour faire pivoter leurs informations d’identification. Cela fonctionne de deux manières : les systèmes back-end qui utilisent le nom d’utilisateur/mot de passe peuvent être mis à jour pour utiliser des certificats ; les systèmes back-end qui utilisent des certificats peuvent être mis à jour en fonction du nom d’utilisateur/mot de passe. Pour cela, utilisez une mise à jour backend.json fichier contenant les paramètres requis à exécuter tridentctl backend update.

$ cat cert-backend-updated.json
{
"version": 1,
"storageDriverName": "ontap-san",
"backendName": "SanBackend",
"managementLIF": "1.2.3.4",
"dataLIF": "1.2.3.8",
"svm": "vserver_test",
"username": "vsadmin",
"password": "secret",
"storagePrefix": "myPrefix_"
}

#Update backend with tridentctl
$ tridentctl update backend SanBackend -f cert-backend-updated.json -n trident
+------------+----------------+--------------------------------------+--------+---------+
|    NAME    | STORAGE DRIVER |                 UUID                 | STATE  | VOLUMES |
+------------+----------------+--------------------------------------+--------+---------+
| SanBackend | ontap-san      | 586b1cd5-8cf8-428d-a76c-2872713612c1 | online |       9 |
+------------+----------------+--------------------------------------+--------+---------+
Remarque Lors de la rotation des mots de passe, l’administrateur du stockage doit d’abord mettre à jour le mot de passe de l’utilisateur sur ONTAP. Cette opération est suivie d’une mise à jour du back-end. Lors de la rotation de certificats, plusieurs certificats peuvent être ajoutés à l’utilisateur. Le back-end est ensuite mis à jour pour utiliser le nouveau certificat, en suivant lequel l’ancien certificat peut être supprimé du cluster ONTAP.

La mise à jour d’un back-end n’interrompt pas l’accès aux volumes qui ont déjà été créés, et n’a aucun impact sur les connexions de volume effectuées après. Une mise à jour réussie indique qu’Astra Trident peut communiquer avec le système back-end ONTAP et gérer les opérations de volumes à venir.

Spécifiez les igroups

Astra Trident utilise des igroups pour contrôler l’accès aux volumes (LUN) qu’il provisionne. Dans le cas de la spécification des igroups pour un système back-end, les administrateurs ont deux options :

  • Astra Trident peut créer et gérer automatiquement un groupe initiateur par système back-end. Si igroupName N’est pas inclus dans la définition du système back-end, Astra Trident crée un groupe initiateur nommé trident-<backend-UUID> Sur le SVM. Cela permet de s’assurer que chaque système back-end dispose d’un groupe initiateur dédié et de gérer l’ajout/la suppression automatiques d’IQN de nœud Kubernetes.

  • Alternativement, les igroups pré-créés peuvent être fournis dans une définition de back-end. Pour ce faire, utilisez le igroupName paramètre config. Astra Trident ajoute/supprime des IQN de nœud Kubernetes au groupe initiateur préexistant.

Pour les systèmes back-end dont ils ont besoin igroupName défini, le igroupName peut être supprimé avec un tridentctl backend update Pour bénéficier des igroups à manipulation automatique avec Astra Trident. L’accès aux volumes déjà rattachés aux charges de travail ne sera pas perturbé. Les futures connexions seront gérées à l’aide du groupe initiateur Astra Trident.

Important Dédier un groupe initiateur à chaque instance unique d’Astra Trident est une bonne pratique bénéfique pour l’administrateur Kubernetes et l’administrateur du stockage. CSI Trident automatise l’ajout et la suppression des IQN du nœud du cluster au groupe initiateur, ce qui simplifie considérablement sa gestion. Lorsque vous utilisez le même SVM sur tous les environnements Kubernetes (et avec des installations Trident d’Astra), un groupe initiateur dédié permet de s’assurer que les modifications apportées à un cluster Kubernetes n’influencent pas les groupes initiateurs associés à un autre. En outre, il est important de s’assurer que chaque nœud du cluster Kubernetes dispose d’un IQN unique. Comme mentionné ci-dessus, Astra Trident s’occupe automatiquement de l’ajout et de la suppression des IQN. La réutilisation d’IQN sur des hôtes peut entraîner des scénarios indésirables où les hôtes se confondu les uns avec les autres et où l’accès aux LUN est refusé.

Si Astra Trident est configuré pour fonctionner comme un provisionnement CSI, les IQN du nœud Kubernetes sont automatiquement ajoutés ou supprimés du groupe initiateur. Lorsque des nœuds sont ajoutés à un cluster Kubernetes, trident-csi DemonSet déploie un pod (trident-csi-xxxxx) sur les nœuds récemment ajoutés et enregistre les nouveaux nœuds sur lesquels il peut attacher des volumes. Les IQN du nœud sont également ajoutés au groupe initiateur du back-end. Un ensemble d’étapes similaire gère la suppression des IQN lorsque le(s) nœud(s) est cordeleted, drainé et supprimé de Kubernetes.

Si Astra Trident ne s’exécute pas comme un provisionnement CSI, le groupe initiateur doit être mis à jour manuellement pour contenir les IQN iSCSI de chaque nœud worker du cluster Kubernetes. Les IQN des nœuds qui rejoignent le cluster Kubernetes devront être ajoutés au groupe initiateur. De même, les IQN des nœuds qui sont supprimés du cluster Kubernetes doivent être supprimés du groupe initiateur.

Authentifier les connexions avec le protocole CHAP bidirectionnel

Astra Trident peut authentifier les sessions iSCSI avec le protocole CHAP bidirectionnel pour le ontap-san et ontap-san-economy pilotes. Pour cela, il faut activer useCHAP dans votre définition backend. Lorsqu’il est réglé sur true, Astra Trident configure la sécurité de l’initiateur par défaut du SVM en CHAP bidirectionnel et définit le nom d’utilisateur et les secrets du fichier backend. NetApp recommande d’utiliser le protocole CHAP bidirectionnel pour l’authentification des connexions. Voir l’exemple de configuration suivant :

{
    "version": 1,
    "storageDriverName": "ontap-san",
    "backendName": "ontap_san_chap",
    "managementLIF": "192.168.0.135",
    "svm": "ontap_iscsi_svm",
    "useCHAP": true,
    "username": "vsadmin",
    "password": "FaKePaSsWoRd",
    "igroupName": "trident",
    "chapInitiatorSecret": "cl9qxIm36DKyawxy",
    "chapTargetInitiatorSecret": "rqxigXgkesIpwxyz",
    "chapTargetUsername": "iJF4heBRT0TCwxyz",
    "chapUsername": "uh2aNCLSd6cNwxyz",
}
Avertissement Le useCHAP Paramètre est une option booléenne qui ne peut être configurée qu’une seule fois. Elle est définie sur FALSE par défaut. Une fois la valeur true définie, vous ne pouvez pas la définir sur false.

En plus de useCHAP=true, le chapInitiatorSecret, chapTargetInitiatorSecret, chapTargetUsername, et chapUsername les champs doivent être inclus dans la définition back-end. Les secrets peuvent être modifiés après la création d’un back-end en cours d’exécution tridentctl update.

Comment cela fonctionne

Par réglage useCHAP À vrai dire, l’administrateur du stockage demande à Astra Trident de configurer le protocole CHAP sur le système back-end. Ceci inclut les éléments suivants :

  • Configuration du protocole CHAP sur le SVM :

    • Si le type de sécurité de l’initiateur par défaut du SVM n’est pas défini (défini par défaut) et il n’y a pas de LUN préexistantes dans le volume, Astra Trident définit le type de sécurité par défaut sur CHAP Et procédez à la configuration de l’initiateur CHAP et du nom d’utilisateur cible et des secrets.

    • Si le SVM contient des LUN, Astra Trident n’active pas le protocole CHAP sur le SVM. Cela permet de garantir que l’accès aux LUN déjà présentes sur le SVM n’est pas restreint.

  • Configuration de l’initiateur CHAP et du nom d’utilisateur cible et des secrets ; ces options doivent être spécifiées dans la configuration backend (comme indiqué ci-dessus).

  • Gestion de l’ajout d’initiateurs au igroupName donné en arrière-plan. Si ce n’est pas spécifié, la valeur par défaut est trident.

Une fois le système back-end créé, Astra Trident crée un correspondant tridentbackend CRD et stocke les secrets et noms d’utilisateur CHAP sous forme de secrets Kubernetes. Tous les volumes persistants créés par Astra Trident sur ce back-end seront montés et rattachés au protocole CHAP.

Rotation des identifiants et mise à jour des systèmes back-end

Vous pouvez mettre à jour les informations d’identification CHAP en mettant à jour les paramètres CHAP dans le backend.json fichier. Cela nécessitera la mise à jour des secrets CHAP et l’utilisation de tridentctl update pour refléter ces modifications.

Avertissement Lors de la mise à jour des secrets CHAP pour un back-end, vous devez utiliser tridentctl pour mettre à jour le backend. Ne mettez pas à jour les identifiants du cluster de stockage via l’interface de ligne de commande/ONTAP car Astra Trident ne pourra pas détecter ces modifications.
$ cat backend-san.json
{
    "version": 1,
    "storageDriverName": "ontap-san",
    "backendName": "ontap_san_chap",
    "managementLIF": "192.168.0.135",
    "svm": "ontap_iscsi_svm",
    "useCHAP": true,
    "username": "vsadmin",
    "password": "FaKePaSsWoRd",
    "igroupName": "trident",
    "chapInitiatorSecret": "cl9qxUpDaTeD",
    "chapTargetInitiatorSecret": "rqxigXgkeUpDaTeD",
    "chapTargetUsername": "iJF4heBRT0TCwxyz",
    "chapUsername": "uh2aNCLSd6cNwxyz",
}

$ ./tridentctl update backend ontap_san_chap -f backend-san.json -n trident
+----------------+----------------+--------------------------------------+--------+---------+
|   NAME         | STORAGE DRIVER |                 UUID                 | STATE  | VOLUMES |
+----------------+----------------+--------------------------------------+--------+---------+
| ontap_san_chap | ontap-san      | aa458f3b-ad2d-4378-8a33-1a472ffbeb5c | online |       7 |
+----------------+----------------+--------------------------------------+--------+---------+

Les connexions existantes ne seront pas affectées. Elles restent actives si les identifiants sont mis à jour par Astra Trident sur le SVM. Les nouvelles connexions utiliseront les informations d’identification mises à jour et les connexions existantes continuent de rester actives. La déconnexion et la reconnexion des anciens volumes persistants se traduront par l’utilisation des identifiants mis à jour.