

 **Aidez à améliorer cette page** 

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Pour contribuer à ce guide de l'utilisateur, cliquez sur le GitHub lien **Modifier cette page sur** qui se trouve dans le volet droit de chaque page.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Utilisation du stockage en système de fichiers Elastic avec Amazon EFS
<a name="efs-csi"></a>

 [Amazon Elastic File System](https://docs.aws.amazon.com/efs/latest/ug/whatisefs.html) (Amazon EFS) fournit un stockage de fichiers entièrement élastique sans serveur pour vous permettre de partager des données de fichiers sans provisionner ni gérer la capacité et les performances de stockage. Le [pilote Amazon EFS Container Storage Interface (CSI)](https://github.com/kubernetes-sigs/aws-efs-csi-driver) permet aux clusters Kubernetes exécutés dessus de monter des systèmes de fichiers AWS Amazon EFS sous forme de volumes persistants. Cette rubrique vous montre comment déployer le pilote Amazon EFS CSI dans votre cluster Amazon EKS.

## Considérations
<a name="efs-csi-considerations"></a>
+ Le pilote Amazon EFS CSI n’est pas compatible avec les images de conteneurs basées sur Windows.
+ Vous ne pouvez pas utiliser [l’approvisionnement dynamique](https://github.com/kubernetes-sigs/aws-efs-csi-driver/blob/master/examples/kubernetes/efs/dynamic_provisioning/README.md) pour les volumes persistants avec les nœuds Fargate, mais vous pouvez utiliser [l’approvisionnement statique](https://github.com/kubernetes-sigs/aws-efs-csi-driver/blob/master/examples/kubernetes/efs/static_provisioning/README.md).
+  [L’approvisionnement dynamique](https://github.com/kubernetes-sigs/aws-efs-csi-driver/blob/master/examples/kubernetes/efs/dynamic_provisioning/README.md) nécessite la version [1.2](https://github.com/kubernetes-sigs/aws-efs-csi-driver/blob/master/CHANGELOG-1.x.md#v12) ou ultérieure du pilote. Vous pouvez utiliser [l’approvisionnement statique](https://github.com/kubernetes-sigs/aws-efs-csi-driver/blob/master/examples/kubernetes/efs/static_provisioning/README.md) pour les volumes persistants à l’aide de la version `1.1` du pilote sur n’importe quelle version de cluster Amazon EKS prise en charge (voir Versions [Amazon EKS prises en charge](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html)).
+ La version [1.3.2](https://github.com/kubernetes-sigs/aws-efs-csi-driver/blob/master/CHANGELOG-1.x.md#v132) ou ultérieure de ce pilote prend en charge l’architecture Arm64, y compris les instances basées sur Amazon EC2 Graviton.
+ Les versions [1.4.2](https://github.com/kubernetes-sigs/aws-efs-csi-driver/blob/master/CHANGELOG-1.x.md#v142) et ultérieures de ce pilote prennent en charge l’utilisation de FIPS pour le montage de systèmes de fichiers.
+ Prenez note des quotas de ressources pour Amazon EFS. Pour plus d'informations, consultez la section [Quotas Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/limits.html).
+ À partir de la version [2.0.0](https://github.com/kubernetes-sigs/aws-efs-csi-driver/blob/master/CHANGELOG-2.x.md#v200), ce pilote est passé de l’utilisation de `stunnel` à celle de `efs-proxy` pour les connexions TLS. Lorsque `efs-proxy` est utilisé, il ouvre un nombre de threads égal à un plus le nombre de cœurs pour le nœud sur lequel il s’exécute.
+ Le pilote CSI Amazon EFS n’est pas compatible avec les nœuds Amazon EKS.

## Conditions préalables
<a name="efs-csi-prereqs"></a>
+ Le pilote Amazon EFS CSI nécessite des autorisations AWS Identity and Access Management (IAM).
  +  AWS suggère d'utiliser EKS Pod Identities. Pour de plus amples informations, veuillez consulter [Présentation de la configuration des identités du pod EKS](pod-identities.md#pod-id-setup-overview).
  + Pour plus d’informations sur les rôles IAM pour les comptes de service et la configuration d’un fournisseur IAM OpenID Connect (OIDC) pour votre cluster, consultez [Créer un fournisseur d'identité OIDC IAM pour votre cluster](enable-iam-roles-for-service-accounts.md).
+ Version `2.12.3` ou version ultérieure `1.27.160` ou version ultérieure de l'interface de ligne de AWS commande (AWS CLI) installée et configurée sur votre appareil ou AWS CloudShell. Pour vérifier votre version actuelle, utilisez `aws --version | cut -d / -f2 | cut -d ' ' -f1`. Les gestionnaires de packages tels que `yum``apt-get`, ou Homebrew pour macOS ont souvent plusieurs versions de retard sur la dernière version de la AWS CLI. Pour installer la dernière version, consultez la section [Installation](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) et [configuration rapide avec aws configure](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-config) dans le *Guide de l'utilisateur de l'interface de ligne de AWS commande*. La version de la AWS CLI installée AWS CloudShell peut également avoir plusieurs versions de retard par rapport à la dernière version. Pour le mettre à jour, consultez la section [Installation de la AWS CLI dans votre répertoire](https://docs.aws.amazon.com/cloudshell/latest/userguide/vm-specs.html#install-cli-software) de base dans le *guide de AWS CloudShell l'utilisateur*.
+ L'outil de ligne de commande `kubectl` est installé sur votre appareil ou AWS CloudShell. La version peut correspondre à celle utilisée par votre cluster Kubernetes, ou différer d’au plus une version mineure, qu’elle soit antérieure ou plus récente. Par exemple, si la version de votre cluster est `1.29`, vous pouvez utiliser la version `kubectl` `1.28`, `1.29` ou `1.30`. Pour installer ou mettre à niveau `kubectl`, veuillez consulter [Configuration de `kubectl` et `eksctl`](install-kubectl.md).

**Note**  
Un Pod fonctionnant sur Fargate monte automatiquement un système de fichiers Amazon EFS, sans nécessiter d’étapes manuelles d’installation de pilotes.

## Étape 1 : Créer un rôle IAM
<a name="efs-create-iam-resources"></a>

Le pilote CSI Amazon EFS nécessite des autorisations IAM pour interagir avec votre système de fichiers. Créez un rôle IAM et associez-y la politique ` arn:aws: iam::aws:policy/service-role/AmazonEFSCSIDriverPolicy` gérée.

**Note**  
Si vous souhaitez utiliser à la fois le stockage du système de fichiers Amazon EFS `AmazonEFSCSIDriverPolicy` et Amazon S3, vous devez associer les politiques `AmazonS3FilesCSIDriverPolicy` gérées à votre rôle IAM. Pour plus d'informations sur le stockage des systèmes de fichiers Amazon S3, consultez[Utiliser le stockage du système de fichiers Amazon S3 avec le pilote Amazon EFS CSI](s3files-csi.md).

Pour mettre en œuvre cette procédure, vous pouvez utiliser l’un des outils suivants :
+  [`eksctl`](#eksctl_efs_store_app_data) 
+  [AWS Management Console](#console_efs_store_app_data) 
+  [AWS CLI](#awscli_efs_store_app_data) 

**Note**  
Les étapes spécifiques de cette procédure sont destinées à l'utilisation du pilote en tant que module complémentaire d'Amazon EKS. Pour plus de détails sur les installations autogérées, voir [Configurer l'autorisation du pilote](https://github.com/kubernetes-sigs/aws-efs-csi-driver/blob/master/docs/install.md#set-up-driver-permission) sur GitHub.

### `eksctl`
<a name="eksctl_efs_store_app_data"></a>

#### Si vous utilisez les identités du pod
<a name="efs-eksctl-pod-identities"></a>

Exécutez les commandes suivantes pour créer un rôle IAM et une association d’identité de pod avec `eksctl`. Remplacez `my-cluster` par le nom de votre cluster. Vous pouvez aussi remplacer `AmazonEKS_EFS_CSI_DriverRole` par un nom différent.

```
export cluster_name=my-cluster
export role_name=AmazonEKS_EFS_CSI_DriverRole
eksctl create podidentityassociation \
    --service-account-name efs-csi-controller-sa \
    --namespace kube-system \
    --cluster $cluster_name \
    --role-name $role_name \
    --permission-policy-arns arn:aws: iam::aws:policy/service-role/AmazonEFSCSIDriverPolicy
```

#### Si vous utilisez des rôles IAM pour des comptes de service
<a name="efs-eksctl-irsa"></a>

Exécutez les commandes suivantes pour créer un rôle IAM avec `eksctl`. Remplacez `my-cluster` par le nom de votre cluster. Vous pouvez aussi remplacer `AmazonEKS_EFS_CSI_DriverRole` par un nom différent.

```
export cluster_name=my-cluster
export role_name=AmazonEKS_EFS_CSI_DriverRole
eksctl create iamserviceaccount \
    --name efs-csi-controller-sa \
    --namespace kube-system \
    --cluster $cluster_name \
    --role-name $role_name \
    --role-only \
    --attach-policy-arn arn:aws: iam::aws:policy/service-role/AmazonEFSCSIDriverPolicy \
    --approve
TRUST_POLICY=$(aws iam get-role --output json --role-name $role_name --query 'Role.AssumeRolePolicyDocument' | \
    sed -e 's/efs-csi-controller-sa/efs-csi-*/' -e 's/StringEquals/StringLike/')
aws iam update-assume-role-policy --role-name $role_name --policy-document "$TRUST_POLICY"
```

### AWS Management Console
<a name="console_efs_store_app_data"></a>

Exécutez la commande suivante pour créer un rôle IAM avec AWS Management Console.

1. Ouvrez la console IAM à https://console.aws.amazon.com/iam/ l'adresse.

1. Dans le volet de navigation de gauche, choisissez **Rôles**.

1. Sur la page **Rôles**, choisissez **Créer un rôle**.

1. Sur la page **Select trusted entity** (Sélectionner une entité de confiance), procédez comme suit :

   1. Si vous utilisez les identités de pod EKS :

      1. Dans la section **Type d'entité fiable**, sélectionnez ** AWS service**.

      1. Dans le menu déroulant **Service ou cas d’utilisation**, sélectionnez **EKS**.

      1. Dans la section **Cas d’utilisation**, sélectionnez **EKS – Identité du pod**.

      1. Choisissez **Suivant**.

   1. Si vous utilisez des rôles IAM pour des comptes de service :

      1. Dans la section **Trusted entity type** (Type d'entité de confiance), sélectionnez **Web identity** (Identité web).

      1. Pour **Fournisseur d'identité**, choisissez l'**URL du fournisseur OpenID Connect** pour votre cluster (comme indiqué sous **Présentation** dans Amazon EKS).

      1. Pour **Audience**, choisissez `sts.amazonaws.com`.

      1. Choisissez **Suivant**.

1. Sur la page **Add permissions** (Ajouter des autorisations), procédez comme suit :

   1. Dans la zone **Filter policies** (Politiques de filtre), saisissez `AmazonEFSCSIDriverPolicy`.

   1. Cochez la case à gauche du `AmazonEFSCSIDriverPolicy` renvoyé dans la recherche.

   1. Choisissez **Suivant**.

1. Sur la page **Name, review, and create** (Nommer, vérifier et créer), procédez comme suit :

   1. Pour **Role name** (Nom de rôle), saisissez un nom unique pour votre rôle, par exemple, `AmazonEKS_EFS_CSI_DriverRole`.

   1. Sous **Ajouter des balises (Facultatif)**, ajoutez des métadonnées au rôle en attachant les identifications sous forme de paires clé-valeur. Pour plus d'informations sur l'utilisation des balises dans IAM, consultez la rubrique [Balisage des ressources IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) dans le *Guide de l'utilisateur IAM*.

   1. Choisissez **Créer un rôle**.

1. Une fois le rôle créé :

   1. Si vous utilisez les identités de pod EKS :

      1. Ouvrez la [console Amazon EKS](https://console.aws.amazon.com/eks/home#/clusters).

      1. Dans le volet de navigation gauche, sélectionnez **Clusters**, puis sélectionnez le nom du cluster pour lequel vous souhaitez configurer l’association d’identité de pod EKS.

      1. Choisissez l’onglet **Access**.

      1. Dans **Associations d’identité du pod**, sélectionnez **Créer**.

      1. Choisissez la liste déroulante du **rôle IAM** et sélectionnez le rôle que vous venez de créer.

      1. Sélectionnez le champ **Espace de noms Kubernetes** et saisissez `kube-system`.

      1. Sélectionnez le champ **Compte de service Kubernetes** et saisissez `efs-csi-controller-sa`.

      1. Choisissez **Créer**.

      1. Pour plus d’informations sur la création d’associations d’identités de pod, consultez [Création d'une association Pod Identity (AWS console)](pod-id-association.md#pod-id-association-create).

   1. Si vous utilisez des rôles IAM pour des comptes de service :

      1. Choisissez le rôle pour l’ouvrir en vue de le modifier.

      1. Sélectionnez l'onglet **Trust relationships** (Relations d'approbation), puis **Edit trust policy** (Modifier la politique d'approbation).

      1. Trouvez la ligne qui ressemble à la ligne suivante :

         ```
         "oidc.eks.region-code.amazonaws.com/id/<EXAMPLED539D4633E53DE1B71EXAMPLE>:aud": "sts.amazonaws.com"
         ```

         Ajoutez la ligne suivante au-dessus de la ligne précédente. Remplacez `<region-code>` par la AWS région dans laquelle se trouve votre cluster. Remplacez `<EXAMPLED539D4633E53DE1B71EXAMPLE>` par l’ID du fournisseur OIDC de votre cluster.

         ```
         "oidc.eks.<region-code>.amazonaws.com/id/<EXAMPLED539D4633E53DE1B71EXAMPLE>:sub": "system:serviceaccount:kube-system:efs-csi-*",
         ```

      1. Modifiez l'opérateur `Condition` de `"StringEquals"` en `"StringLike"`.

      1. Sélectionnez **Update Trust Policy** (Mettre à jour la politique d'approbation) pour terminer.

### AWS CLI
<a name="awscli_efs_store_app_data"></a>

Exécutez les commandes suivantes pour créer un rôle IAM avec la AWS CLI.

#### Si vous utilisez les identités du pod
<a name="efs-cli-pod-identities"></a>

1. Créez le rôle IAM qui accorde les actions `AssumeRole` et `TagSession` au service `pods.eks.amazonaws.com`.

   1. Copiez le contenu suivant dans un fichier nommé `aws-efs-csi-driver-trust-policy-pod-identity.json`.

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Sid": "AllowEksAuthToAssumeRoleForPodIdentity",
                  "Effect": "Allow",
                  "Principal": {
                      "Service": "pods.eks.amazonaws.com"
                  },
                  "Action": [
                      "sts:AssumeRole",
                      "sts:TagSession"
                  ]
              }
          ]
      }
      ```

   1. Créez le rôle. Remplacez `my-cluster` par le nom de votre cluster. Vous pouvez aussi remplacer `AmazonEKS_EFS_CSI_DriverRole` par un nom différent.

      ```
      export cluster_name=my-cluster
      export role_name=AmazonEKS_EFS_CSI_DriverRole
      aws iam create-role \
        --role-name $role_name \
        --assume-role-policy-document file://"aws-efs-csi-driver-trust-policy-pod-identity.json"
      ```

1. Associez la politique AWS gérée requise au rôle à l'aide de la commande suivante.

   ```
   aws iam attach-role-policy \
     --policy-arn arn:aws: iam::aws:policy/service-role/AmazonEFSCSIDriverPolicy \
     --role-name $role_name
   ```

1. Exécutez la commande suivante pour créer l’association d’identité de pod. Remplacez `<111122223333>` par votre ID de compte.

   ```
   aws eks create-pod-identity-association --cluster-name $cluster_name --role-arn {arn-aws}iam::<111122223333>:role/$role_name --namespace kube-system --service-account efs-csi-controller-sa
   ```

1. Pour plus d’informations sur la création d’associations d’identités de pod, consultez [Création d'une association Pod Identity (AWS console)](pod-id-association.md#pod-id-association-create).

#### Si vous utilisez des rôles IAM pour des comptes de service
<a name="efs-cli-irsa"></a>

1. Affichez l’URL du fournisseur OIDC de votre cluster. Remplacez `my-cluster` par le nom de votre cluster. Vous pouvez aussi remplacer `AmazonEKS_EFS_CSI_DriverRole` par un nom différent.

   ```
   export cluster_name=my-cluster
   export role_name=AmazonEKS_EFS_CSI_DriverRole
   aws eks describe-cluster --name $cluster_name --query "cluster.identity.oidc.issuer" --output text
   ```

   L'exemple qui suit illustre un résultat.

   ```
   https://oidc.eks.<region-code>.amazonaws.com/id/<EXAMPLED539D4633E53DE1B71EXAMPLE>
   ```

   Si la sortie de la commande est `None`, consultez **Prérequis**.

1. Créez le rôle IAM qui accorde l'action `AssumeRoleWithWebIdentity`.

   1. Copiez le contenu suivant dans un fichier nommé `aws-efs-csi-driver-trust-policy.json`. Remplacez `<111122223333>` par votre ID de compte. Remplacez `<EXAMPLED539D4633E53DE1B71EXAMPLE>` et `<region-code>` par les valeurs renvoyées par l'étape précédente.

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Principal": {
              "Federated": "arn:aws:iam::123456789012:oidc-provider/oidc.eks.us-east-1.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE"
            },
            "Action": "sts:AssumeRoleWithWebIdentity",
            "Condition": {
              "StringLike": {
                "oidc.eks.us-east-1.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:sub": "system:serviceaccount:kube-system:efs-csi-*",
                "oidc.eks.us-east-1.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:aud": "sts.amazonaws.com"
              }
            }
          }
        ]
      }
      ```

   1. Créez le rôle.

      ```
      aws iam create-role \
        --role-name $role_name \
        --assume-role-policy-document file://"aws-efs-csi-driver-trust-policy.json"
      ```

1. Associez la politique AWS gérée requise au rôle à l'aide de la commande suivante.

   ```
   aws iam attach-role-policy \
     --policy-arn arn:aws: iam::aws:policy/service-role/AmazonEFSCSIDriverPolicy \
     --role-name $role_name
   ```

## Étape 2 : obtenir le pilote CSI Amazon EFS
<a name="efs-install-driver"></a>

Nous vous recommandons d'installer le pilote CSI Amazon EFS en utilisant le module complémentaire Amazon EKS. Pour ajouter un module complémentaire Amazon EKS à votre cluster, voir [Créer un module complémentaire Amazon EKS](creating-an-add-on.md). Pour plus d'informations sur les modules complémentaires, voir [Modules complémentaires Amazon EKS](eks-add-ons.md). Si vous ne parvenez pas à utiliser le module complémentaire Amazon EKS, nous vous encourageons à signaler les raisons pour lesquelles vous ne pouvez pas utiliser le module complémentaire Amazon EKS dans le [ GitHub référentiel de feuilles de route pour les conteneurs](https://github.com/aws/containers-roadmap/issues).

**Important**  
Avant d’ajouter le pilote Amazon EFS en tant que module complémentaire Amazon EKS, vérifiez qu’aucune version autogérée du pilote n’est déjà installée sur votre cluster. Dans ce cas, consultez la section [Désinstallation du pilote Amazon EFS CSI](https://github.com/kubernetes-sigs/aws-efs-csi-driver/blob/master/docs/install.md#uninstalling-the-amazon-efs-csi-driver) sur. GitHub

Sinon, si vous souhaitez une installation autogérée du pilote CSI Amazon EFS, voir [Installation](https://github.com/kubernetes-sigs/aws-efs-csi-driver/blob/master/docs/install.md) sur GitHub.

## Étape 3 : Créer un système de fichiers Amazon EFS
<a name="efs-create-filesystem"></a>

Pour créer un système de fichiers Amazon EFS, voir [Création d'un système de fichiers Amazon EFS pour Amazon EKS](https://github.com/kubernetes-sigs/aws-efs-csi-driver/blob/master/docs/efs-create-filesystem.md) sur GitHub.

## Étape 4 : déployer un exemple d’application
<a name="efs-sample-app"></a>

Vous pouvez déployer une variété d'applications types et les modifier selon vos besoins. Pour plus d'informations, consultez la section [Exemples](https://github.com/kubernetes-sigs/aws-efs-csi-driver/tree/master/examples/kubernetes) sur GitHub.