Rechercher

5.9. Opérateur du pilote CSI de AWS Elastic File Service

download PDF

5.9.1. Vue d'ensemble

OpenShift Container Platform est capable de provisionner des volumes persistants (PV) à l'aide du pilote Container Storage Interface (CSI) pour AWS Elastic File Service (EFS).

Il est recommandé de se familiariser avec le stockage persistant et la configuration des volumes CSI lorsque l'on travaille avec un opérateur et un pilote CSI.

Après avoir installé l'opérateur de pilote AWS EFS CSI, OpenShift Container Platform installe l'opérateur AWS EFS CSI et le pilote AWS EFS CSI par défaut dans l'espace de noms openshift-cluster-csi-drivers. Cela permet à l'opérateur de pilote AWS EFS CSI de créer des PV provisionnées CSI qui se montent sur des actifs AWS EFS.

  • Le site AWS EFS CSI Driver Operator, une fois installé, ne crée pas par défaut de classe de stockage à utiliser pour créer des réclamations de volumes persistants (PVC). Toutefois, vous pouvez créer manuellement la classe de stockage AWS EFS StorageClass. L'AWS EFS CSI Driver Operator prend en charge le provisionnement dynamique des volumes en permettant la création de volumes de stockage à la demande. Les administrateurs de clusters n'ont donc plus besoin de préprovisionner le stockage.
  • Le site AWS EFS CSI driver vous permet de créer et de monter des PV AWS EFS.
Note

AWS EFS ne prend en charge que les volumes régionaux, et non les volumes zonaux.

5.9.2. À propos du CSI

Les fournisseurs de stockage ont traditionnellement fourni des pilotes de stockage dans le cadre de Kubernetes. Avec la mise en œuvre de l'interface de stockage des conteneurs (CSI), les fournisseurs tiers peuvent à la place fournir des plugins de stockage à l'aide d'une interface standard sans jamais avoir à modifier le code de base de Kubernetes.

Les opérateurs CSI offrent aux utilisateurs d'OpenShift Container Platform des options de stockage, telles que les instantanés de volume, qui ne sont pas possibles avec les plugins de volume dans l'arborescence.

5.9.3. Configuration de l'opérateur du pilote AWS EFS CSI

  1. Installez le pilote AWS EFS CSI Driver Operator.
  2. Installez le pilote AWS EFS CSI.

5.9.3.1. Installation de l'opérateur du pilote AWS EFS CSI

L'opérateur de pilote AWS EFS CSI n'est pas installé par défaut dans OpenShift Container Platform. Utilisez la procédure suivante pour installer et configurer le pilote AWS EFS CSI Driver Operator dans votre cluster.

Conditions préalables

  • Accès à la console web d'OpenShift Container Platform.

Procédure

Pour installer l'opérateur de pilote AWS EFS CSI à partir de la console web :

  1. Connectez-vous à la console web.
  2. Installez l'opérateur AWS EFS CSI :

    1. Cliquez sur Operators OperatorHub.
    2. Localisez l'opérateur AWS EFS CSI en tapant AWS EFS CSI dans la boîte de filtre.
    3. Cliquez sur le bouton AWS EFS CSI Driver Operator.

      Important

      Veillez à sélectionner AWS EFS CSI Driver Operator et non AWS EFS Operator. AWS EFS Operator est un opérateur communautaire et n'est pas pris en charge par Red Hat.

    4. Sur la page AWS EFS CSI Driver Operator, cliquez sur Install.
    5. Sur la page Install Operator, assurez-vous que

      • All namespaces on the cluster (default) est sélectionné.
      • Installed Namespace est fixé à openshift-cluster-csi-drivers.
    6. Cliquez sur Install.

      Une fois l'installation terminée, l'opérateur AWS EFS CSI est répertorié dans la section Installed Operators de la console Web.

Prochaines étapes

  • Si vous utilisez AWS EFS avec AWS Secure Token Service (STS), vous devez configurer le pilote AWS EFS CSI avec STS. Pour plus d'informations, voir Configuration du pilote AWS EFS CSI avec STS.

5.9.3.2. Configuration d'AWS EFS CSI Driver Operator avec Security Token Service

Cette procédure explique comment configurer l'opérateur du pilote AWS EFS CSI avec OpenShift Container Platform sur AWS Security Token Service (STS).

Effectuez cette procédure avant d'avoir installé l'opérateur AWS EFS CSI, mais pas encore le pilote AWS EFS CSI dans le cadre de la procédure Installing the AWS EFS CSI Driver Operator.

Important

Si vous effectuez cette procédure après avoir installé le pilote et créé des volumes, vos volumes ne pourront pas être montés dans les pods.

Conditions préalables

  • Vous avez accès au cluster en tant qu'utilisateur ayant le rôle de cluster-admin.
  • Informations d'identification du compte AWS
  • Vous avez installé l'opérateur AWS EFS CSI.

Procédure

Pour configurer l'opérateur de pilote AWS EFS CSI avec STS :

  1. Extrayez le binaire de l'utilitaire CCO (ccoctl) de l'image de version d'OpenShift Container Platform, que vous avez utilisée pour installer le cluster avec STS. Pour plus d'informations, voir "Configuring the Cloud Credential Operator utility".
  2. Créez et enregistrez un fichier YAML EFS CredentialsRequest, comme dans l'exemple suivant, et placez-le dans le répertoire credrequests:

    Exemple :

    apiVersion: cloudcredential.openshift.io/v1
    kind: CredentialsRequest
    metadata:
      name: openshift-aws-efs-csi-driver
      namespace: openshift-cloud-credential-operator
    spec:
      providerSpec:
        apiVersion: cloudcredential.openshift.io/v1
        kind: AWSProviderSpec
        statementEntries:
        - action:
          - elasticfilesystem:*
          effect: Allow
          resource: '*'
      secretRef:
        name: aws-efs-cloud-credentials
        namespace: openshift-cluster-csi-drivers
      serviceAccountNames:
      - aws-efs-csi-driver-operator
      - aws-efs-csi-driver-controller-sa

  3. Exécutez l'outil ccoctl pour générer un nouveau rôle IAM dans AWS et créez un fichier YAML pour ce rôle dans le système de fichiers local (<path_to_ccoctl_output_dir>/manifests/openshift-cluster-csi-drivers-aws-efs-cloud-credentials-credentials.yaml).

    $ ccoctl aws create-iam-roles --name=<name> --region=<aws_region> --credentials-requests-dir=<path_to_directory_with_list_of_credentials_requests>/credrequests --identity-provider-arn=arn :aws:iam::<aws_account_id>:oidc-provider/<name>-oidc.s3.<aws_region>.amazonaws.com
    • name=<name> est le nom utilisé pour étiqueter toutes les ressources du nuage créées pour le suivi.
    • region=<aws_region> est la région AWS où les ressources cloud sont créées.
    • dir=<path_to_directory_with_list_of_credentials_requests>/credrequests est le répertoire contenant le fichier EFS CredentialsRequest de l'étape précédente.
    • <aws_account_id> est l'identifiant du compte AWS.

      Exemple :

      $ ccoctl aws create-iam-roles --name my-aws-efs --credentials-requests-dir credrequests --identity-provider-arn arn:aws:iam::123456789012:oidc-provider/my-aws-efs-oidc.s3.us-east-2.amazonaws.com

      Exemple de sortie

      2022/03/21 06:24:44 Role arn:aws:iam::123456789012:role/my-aws-efs -openshift-cluster-csi-drivers-aws-efs-cloud- created
      2022/03/21 06:24:44 Saved credentials configuration to: /manifests/openshift-cluster-csi-drivers-aws-efs-cloud-credentials-credentials.yaml
      2022/03/21 06:24:45 Updated Role policy for Role my-aws-efs-openshift-cluster-csi-drivers-aws-efs-cloud-

  4. Créez les informations d'identification et le secret du nuage AWS EFS :

    oc create -f <path_to_ccoctl_output_dir>/manifests/openshift-cluster-csi-drivers-aws-efs-cloud-credentials-credentials.yaml

    Exemple :

    $ oc create -f /manifests/openshift-cluster-csi-drivers-aws-efs-cloud-credentials-credentials.yaml

    Exemple de sortie

    secret/aws-efs-cloud-credentials created

5.9.3.3. Installation du pilote AWS EFS CSI

Conditions préalables

  • Accès à la console web d'OpenShift Container Platform.

Procédure

  1. Cliquez sur Administration CustomResourceDefinitions ClusterCSIDriver.
  2. Dans l'onglet Instances, cliquez sur Create ClusterCSIDriver.
  3. Utilisez le fichier YAML suivant :

    apiVersion: operator.openshift.io/v1
    kind: ClusterCSIDriver
    metadata:
        name: efs.csi.aws.com
    spec:
      managementState: Managed
  4. Cliquez sur Create.
  5. Attendre que les conditions suivantes passent à l'état "Vrai" :

    • AWSEFSDriverNodeServiceControllerAvailable (Contrôleur de service du pilote AWSEFSD)
    • AWSEFSDriverControllerServiceControllerAvailable (disponible)

5.9.4. Création de la classe de stockage AWS EFS

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.

Le site AWS EFS CSI Driver Operator, une fois installé, ne crée pas de classe de stockage par défaut. Cependant, vous pouvez créer manuellement la classe de stockage AWS EFS.

5.9.4.1. Création de la classe de stockage AWS EFS à l'aide de la console

Procédure

  1. Dans la console OpenShift Container Platform, cliquez sur Storage StorageClasses.
  2. Sur la page StorageClasses, cliquez sur Create StorageClass.
  3. Sur la page StorageClass, procédez comme suit :

    1. Entrez un nom pour référencer la classe de stockage.
    2. En option : Saisissez la description.
    3. Sélectionnez la politique de récupération.
    4. Sélectionnez efs.csi.aws.com dans la liste déroulante Provisioner.
    5. Optionnel : Définir les paramètres de configuration du provisionneur sélectionné.
  4. Cliquez sur Create.

5.9.4.2. Création de la classe de stockage AWS EFS à l'aide de la CLI

Procédure

  • Créer un objet StorageClass:

    kind: StorageClass
    apiVersion: storage.k8s.io/v1
    metadata:
      name: efs-sc
    provisioner: efs.csi.aws.com
    parameters:
      provisioningMode: efs-ap 1
      fileSystemId: fs-a5324911 2
      directoryPerms: "700" 3
      gidRangeStart: "1000" 4
      gidRangeEnd: "2000" 5
      basePath: "/dynamic_provisioning" 6
    1
    provisioningMode doit être efs-ap pour permettre le provisionnement dynamique.
    2
    fileSystemId doit être l'ID du volume EFS créé manuellement.
    3
    directoryPerms est l'autorisation par défaut du répertoire racine du volume. Dans cet exemple, le volume n'est accessible que par le propriétaire.
    4 5
    gidRangeStart et gidRangeEnd définissent la plage d'ID de groupe POSIX (GID) utilisée pour définir le GID du point d'accès AWS. Si elle n'est pas spécifiée, la plage par défaut est 50000-7000000. Chaque volume provisionné, et donc chaque point d'accès AWS, se voit attribuer un GID unique dans cette plage.
    6
    basePath est le répertoire du volume EFS utilisé pour créer des volumes provisionnés dynamiquement. Dans ce cas, un PV est provisionné en tant que "/dynamic_provisioning/<random uuid>" sur le volume EFS. Seul le sous-répertoire est monté sur les pods qui utilisent le PV.
    Note

    Un administrateur de cluster peut créer plusieurs objets StorageClass, chacun utilisant un volume EFS différent.

5.9.5. Création et configuration de l'accès aux volumes EFS dans AWS

Cette procédure explique comment créer et configurer des volumes EFS dans AWS afin de pouvoir les utiliser dans OpenShift Container Platform.

Conditions préalables

  • Informations d'identification du compte AWS

Procédure

Pour créer et configurer l'accès à un volume EFS dans AWS :

  1. Dans la console AWS, ouvrez https://console.aws.amazon.com/efs.
  2. Cliquez sur Create file system:

    • Saisissez un nom pour le système de fichiers.
    • Pour Virtual Private Cloud (VPC), sélectionnez le nuage privé virtuel (VPC) de votre OpenShift Container Platform.
    • Accepter les paramètres par défaut pour toutes les autres sélections.
  3. Attendez que le volume et les cibles de montage soient entièrement créés :

    1. Allez sur https://console.aws.amazon.com/efs#/file-systems.
    2. Cliquez sur votre volume et, dans l'onglet Network, attendez que toutes les cibles de montage soient disponibles (~1-2 minutes).
  4. Dans l'onglet Network, copiez l'identifiant du groupe de sécurité (vous en aurez besoin à l'étape suivante).
  5. Allez sur https://console.aws.amazon.com/ec2/v2/home#SecurityGroups, et trouvez le groupe de sécurité utilisé par le volume EFS.
  6. Dans l'onglet Inbound rules, cliquez sur Edit inbound rules, puis ajoutez une nouvelle règle avec les paramètres suivants pour permettre aux nœuds OpenShift Container Platform d'accéder aux volumes EFS :

    • Type: NFS
    • Protocol: TCP
    • Port range: 2049
    • Source: Plage d'adresses IP personnalisées de vos nœuds (par exemple : "10.0.0.0/16")

      Cette étape permet à OpenShift Container Platform d'utiliser les ports NFS du cluster.

  7. Sauvegarder la règle.

5.9.6. Provisionnement dynamique pour AWS EFS

Le pilote CSI AWS EFS prend en charge une forme de provisionnement dynamique différente de celle des autres pilotes CSI. Il provisionne de nouveaux PV en tant que sous-répertoires d'un volume EFS préexistant. Les PV sont indépendantes les unes des autres. Cependant, ils partagent tous le même volume EFS. Lorsque le volume est supprimé, toutes les parties privatives provisionnées à partir de celui-ci sont également supprimées. Le pilote EFS CSI crée un point d'accès AWS pour chacun de ces sous-répertoires. En raison des limites imposées par les points d'accès AWS, vous ne pouvez provisionner dynamiquement que 1 000 PV à partir d'un seul volume StorageClass/EFS.

Important

Notez que PVC.spec.resources n'est pas appliqué par l'EFS.

Dans l'exemple ci-dessous, vous demandez 5 GiB d'espace. Cependant, le PV créé est illimité et peut stocker n'importe quelle quantité de données (comme des pétaoctets). Une application défectueuse, ou même une application malveillante, peut entraîner des dépenses importantes si elle stocke trop de données sur le volume.

Il est fortement recommandé de surveiller la taille des volumes EFS dans AWS.

Conditions préalables

  • Vous avez créé des volumes AWS EFS.
  • Vous avez créé la classe de stockage AWS EFS.

Procédure

Pour activer le provisionnement dynamique :

  • Créez un PVC (ou StatefulSet ou Template) comme d'habitude, en vous référant au site StorageClass créé précédemment.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: test
    spec:
      storageClassName: efs-sc
      accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: 5Gi

Si vous rencontrez des problèmes lors de la configuration du provisionnement dynamique, consultez la section Dépannage d'AWS EFS.

5.9.7. Création de PV statiques avec AWS EFS

Il est possible d'utiliser un volume AWS EFS en tant que PV unique sans provisionnement dynamique. L'ensemble du volume est monté sur des pods.

Conditions préalables

  • Vous avez créé des volumes AWS EFS.

Procédure

  • Créez le PV à l'aide du fichier YAML suivant :

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: efs-pv
    spec:
      capacity: 1
        storage: 5Gi
      volumeMode: Filesystem
      accessModes:
        - ReadWriteMany
        - ReadWriteOnce
      persistentVolumeReclaimPolicy: Retain
      csi:
        driver: efs.csi.aws.com
        volumeHandle: fs-ae66151a 2
        volumeAttributes:
          encryptInTransit: "false" 3
    1
    spec.capacity n'a aucune signification et est ignorée par le pilote CSI. Il n'est utilisé que lors de la liaison avec un PVC. Les applications peuvent stocker n'importe quelle quantité de données sur le volume.
    2
    volumeHandle doit être le même ID que le volume EFS que vous avez créé dans AWS. Si vous fournissez votre propre point d'accès, volumeHandle doit être <EFS volume ID>::<access point ID>. Par exemple : fs-6e633ada::fsap-081a1d293f0004630.
    3
    Si vous le souhaitez, vous pouvez désactiver le cryptage en transit. Le cryptage est activé par défaut.

Si vous rencontrez des problèmes lors de la configuration des PV statiques, consultez la section Dépannage d'AWS EFS.

5.9.8. Sécurité AWS EFS

Les informations suivantes sont importantes pour la sécurité d'AWS EFS.

Lors de l'utilisation de points d'accès, par exemple en utilisant le provisionnement dynamique comme décrit précédemment, Amazon remplace automatiquement les GID des fichiers par le GID du point d'accès. En outre, EFS prend en compte l'ID de l'utilisateur, l'ID du groupe et les ID du groupe secondaire du point d'accès lors de l'évaluation des autorisations du système de fichiers. EFS ignore les ID du client NFS. Pour plus d'informations sur les points d'accès, voir https://docs.aws.amazon.com/efs/latest/ug/efs-access-points.html.

Par conséquent, les volumes EFS ignorent silencieusement FSGroup ; OpenShift Container Platform n'est pas en mesure de remplacer les GID des fichiers sur le volume par FSGroup. Tout pod qui peut accéder à un point d'accès EFS monté peut accéder à n'importe quel fichier qui s'y trouve.

Sans rapport avec cela, le cryptage en transit est activé par défaut. Pour plus d'informations, voir https://docs.aws.amazon.com/efs/latest/ug/encryption-in-transit.html.

5.9.9. Dépannage d'AWS EFS

Les informations suivantes indiquent comment résoudre les problèmes liés à AWS EFS :

  • L'opérateur AWS EFS et le pilote CSI s'exécutent dans l'espace de noms openshift-cluster-csi-drivers.
  • Pour lancer la collecte des journaux de l'opérateur AWS EFS et du pilote CSI, exécutez la commande suivante :

    $ oc adm must-gather
    [must-gather      ] OUT Using must-gather plugin-in image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:125f183d13601537ff15b3239df95d47f0a604da2847b561151fedd699f5e3a5
    [must-gather      ] OUT namespace/openshift-must-gather-xm4wq created
    [must-gather      ] OUT clusterrolebinding.rbac.authorization.k8s.io/must-gather-2bd8x created
    [must-gather      ] OUT pod for plug-in image quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:125f183d13601537ff15b3239df95d47f0a604da2847b561151fedd699f5e3a5 created
  • Pour afficher les erreurs de l'opérateur AWS EFS, consultez l'état de ClusterCSIDriver:

    $ oc get clustercsidriver efs.csi.aws.com -o yaml
  • Si un volume ne peut pas être monté sur un pod (comme le montre la sortie de la commande suivante) :

    $ oc describe pod
    ...
      Type     Reason       Age    From               Message
      ----     ------       ----   ----               -------
      Normal   Scheduled    2m13s  default-scheduler  Successfully assigned default/efs-app to ip-10-0-135-94.ec2.internal
      Warning  FailedMount  13s    kubelet            MountVolume.SetUp failed for volume "pvc-d7c097e6-67ec-4fae-b968-7e7056796449" : rpc error: code = DeadlineExceeded desc = context deadline exceeded 1
      Warning  FailedMount  10s    kubelet            Unable to attach or mount volumes: unmounted volumes=[persistent-storage], unattached volumes=[persistent-storage kube-api-access-9j477]: timed out waiting for the condition
    1
    Message d'avertissement indiquant que le volume n'est pas monté.

    Cette erreur est souvent causée par l'abandon de paquets par AWS entre un nœud OpenShift Container Platform et AWS EFS.

    Vérifiez que les éléments suivants sont corrects :

    • Pare-feu AWS et groupes de sécurité
    • Réseau : numéro de port et adresses IP

5.9.10. Désinstallation de l'opérateur du pilote CSI AWS EFS

Tous les PV EFS sont inaccessibles après la désinstallation de AWS EFS CSI Driver Operator.

Conditions préalables

  • Accès à la console web d'OpenShift Container Platform.

Procédure

Pour désinstaller l'opérateur du pilote AWS EFS CSI à partir de la console Web :

  1. Connectez-vous à la console web.
  2. Arrêtez toutes les applications qui utilisent les PV AWS EFS.
  3. Supprimer tous les PV AWS EFS :

    1. Cliquez sur Storage PersistentVolumeClaims.
    2. Sélectionnez chaque PVC utilisé par l'opérateur du pilote AWS EFS CSI, cliquez sur le menu déroulant à l'extrême droite du PVC, puis sur Delete PersistentVolumeClaims.
  4. Désinstallez le pilote AWS EFS CSI :

    Note

    Avant de pouvoir désinstaller l'Opérateur, vous devez d'abord supprimer le pilote CSI.

    1. Cliquez sur Administration CustomResourceDefinitions ClusterCSIDriver.
    2. Dans l'onglet Instances, pour efs.csi.aws.com, à l'extrême gauche, cliquez sur le menu déroulant, puis sur Delete ClusterCSIDriver.
    3. Lorsque vous y êtes invité, cliquez sur Delete.
  5. Désinstallez l'opérateur AWS EFS CSI :

    1. Cliquez sur Operators Installed Operators.
    2. Sur la page Installed Operators, faites défiler ou tapez AWS EFS CSI dans la case Search by name pour trouver l'opérateur, puis cliquez dessus.
    3. En haut à droite de la page Installed Operators > Operator details, cliquez sur Actions Uninstall Operator.
    4. Lorsque la fenêtre Uninstall Operator vous le demande, cliquez sur le bouton Uninstall pour supprimer l'opérateur de l'espace de noms. Toutes les applications déployées par l'opérateur sur le cluster doivent être nettoyées manuellement.

      Après la désinstallation, AWS EFS CSI Driver Operator n'est plus listé dans la section Installed Operators de la console web.

Note

Avant de pouvoir détruire un cluster (openshift-install destroy cluster), vous devez supprimer le volume EFS dans AWS. Un cluster OpenShift Container Platform ne peut pas être détruit lorsqu'il y a un volume EFS qui utilise le VPC du cluster. Amazon n'autorise pas la suppression d'un tel VPC.

5.9.11. Ressources supplémentaires

Red Hat logoGithubRedditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez leBlog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

© 2024 Red Hat, Inc.