

 **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.

# Utilisez le stockage de volumes Kubernetes avec Amazon EBS
<a name="ebs-csi"></a>

**Note**  
 **Nouveau :** le mode automatique Amazon EKS automatise les tâches de routine pour le stockage par blocs. Découvrez comment [Déployer un exemple de charge de travail avec état dans le mode automatique EKS](sample-storage-workload.md).

Le [pilote CSI (Container Storage Interface) Amazon Elastic Block Store (Amazon EBS)](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/) gère le cycle de vie des volumes Amazon EBS en tant que stockage pour les volumes Kubernetes que vous créez. Le pilote CSI Amazon EBS crée des volumes Amazon EBS pour ces types de volumes Kubernetes : [volumes éphémères](https://kubernetes.io/docs/concepts/storage/ephemeral-volumes/) génériques et [volumes persistants](https://kubernetes.io/docs/concepts/storage/persistent-volumes/).

## Considérations
<a name="ebs-csi-considerations"></a>
+ Il n’est pas nécessaire d’installer le contrôleur CSI Amazon EBS sur les clusters du mode automatique EKS.
+ Vous ne pouvez pas monter des volumes Amazon EBS sur des pods Fargate.
+ Vous pouvez exécuter le contrôleur CSI Amazon EBS sur les nœuds Fargate, mais le nœud CSI `DaemonSet` Amazon EBS ne peut fonctionner que sur des instances Amazon EC2.
+ Les volumes Amazon EBS et le pilote CSI Amazon EBS ne sont pas compatibles avec les nœuds hybrides Amazon EKS.
+ Une assistance sera fournie pour la dernière version complémentaire et la version précédente. Les correctifs de bogues ou de vulnérabilités découverts dans la dernière version seront rétroportés vers la version précédente en tant que nouvelle version mineure.
+ Le mode automatique EKS nécessite des classes de stockage pour utiliser `ebs.csi.eks.amazonaws.com` comme provisionneur. Le pilote Amazon EBS CSI standard (`ebs.csi.aws.com`) gère ses propres volumes séparément. Pour utiliser les volumes existants avec le mode automatique EKS, migrez-les à l’aide de snapshots de volume vers une classe de stockage qui utilise le provisionneur en mode automatique.

**Important**  
Pour utiliser la fonctionnalité de snapshot du pilote CSI Amazon EBS, vous devez d’abord installer le contrôleur de snapshot CSI. Pour de plus amples informations, veuillez consulter [Activer la fonctionnalité d’instantané pour les volumes CSI](csi-snapshot-controller.md).

## Conditions préalables
<a name="ebs-csi-prereqs"></a>
+ Un cluster existant. Pour afficher la version requise de la plateforme, exécutez la commande suivante.

  ```
  aws eks describe-addon-versions --addon-name aws-ebs-csi-driver
  ```
+ Le pilote EBS CSI nécessite des autorisations AWS 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, consultez [Créer un fournisseur d'identité OIDC IAM pour votre cluster](enable-iam-roles-for-service-accounts.md).

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

Le plug-in Amazon EBS CSI nécessite des autorisations IAM pour passer des appels en votre AWS APIs nom. Si vous ne suivez pas ces étapes, la tentative d’installation et d’exécution de `kubectl describe pvc` affichera `failed to provision volume with StorageClass` et s’accompagnera d’une erreur `could not create volume in EC2: UnauthorizedOperation`. Pour plus d'informations, consultez [Configuration de l'autorisation du pilote](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/blob/master/docs/install.md#set-up-driver-permissions) sur GitHub.

**Note**  
Les pods auront accès aux autorisations attribuées au rôle IAM, sauf si vous bloquez l’accès à IMDS. Pour de plus amples informations, veuillez consulter [Sécuriser les clusters Amazon EKS avec les bonnes pratiques](security-best-practices.md).

La procédure suivante explique comment créer un rôle IAM et y associer la politique AWS gérée. Pour mettre en œuvre cette procédure, vous pouvez utiliser l’un des outils suivants :
+  [`eksctl`](#eksctl_store_app_data) 
+  [AWS Management Console](#console_store_app_data) 
+  [AWS CLI](#awscli_store_app_data) 

**Note**  
Vous pouvez créer une politique autogérée avec d'autres autorisations limitées. Vérifiez [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEBSCSIDriverPolicyV2.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEBSCSIDriverPolicyV2.html) et créez une politique IAM personnalisée avec des autorisations réduites. En cas de migration depuis`AmazonEBSCSIDriverPolicy`, consultez la section Migration de la politique du [pilote EBS CSI](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/issues/2918).

**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. Différentes étapes sont nécessaires pour utiliser le pilote en tant que module complémentaire autogéré. Pour plus d'informations, voir [Configurer les autorisations du conducteur](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/blob/master/docs/install.md#set-up-driver-permissions) sur GitHub.

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

1. Créez un rôle IAM et associez une politique. AWS gère une politique AWS gérée ou vous pouvez créer votre propre politique personnalisée. Vous pouvez créer un rôle IAM et associer la politique AWS gérée à l'aide de la commande suivante. Remplacez *my-cluster* par le nom de votre cluster. La commande déploie une AWS CloudFormation pile qui crée un rôle IAM et y attache la politique IAM.

   ```
   eksctl create iamserviceaccount \
           --name ebs-csi-controller-sa \
           --namespace kube-system \
           --cluster my-cluster \
           --role-name AmazonEKS_EBS_CSI_DriverRole \
           --role-only \
           --attach-policy-arn arn:aws: iam::aws:policy/service-role/AmazonEBSCSIDriverPolicyV2 \
           --approve
   ```

1. Vous pouvez ignorer cette étape si vous n’utilisez pas de [clé KMS](https://aws.amazon.com/kms/) personnalisée. Si vous en utilisez un pour le chiffrement sur vos volumes Amazon EBS, personnalisez le rôle IAM selon vos besoins. Par exemple, procédez comme suit :

   1. Copiez et collez le code suivant dans un nouveau fichier `kms-key-for-encryption-on-ebs.json`. Remplacez *custom-key-arn* par l'[ARN de clé KMS](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awskeymanagementservice.html#awskeymanagementservice-key) personnalisé.

      ```
      {
            "Version":"2012-10-17",		 	 	 
            "Statement": [
              {
                "Effect": "Allow",
                "Action": [
                  "kms:CreateGrant",
                  "kms:ListGrants",
                  "kms:RevokeGrant"
                ],
                "Resource": ["arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab"],
                "Condition": {
                  "Bool": {
                    "kms:GrantIsForAWSResource": "true"
                  }
                }
              },
              {
                "Effect": "Allow",
                "Action": [
                  "kms:Encrypt",
                  "kms:Decrypt",
                  "kms:ReEncrypt*",
                  "kms:GenerateDataKey*",
                  "kms:DescribeKey"
                ],
                "Resource": ["arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab"]
              }
            ]
          }
      ```

   1. Créez la politique. Vous pouvez remplacer *KMS\$1Key\$1For\$1Encryption\$1On\$1EBS\$1Policy* par un autre nom. Cependant, si vous le remplacez, assurez-vous de le remplacer également dans les étapes suivantes.

      ```
      aws iam create-policy \
            --policy-name KMS_Key_For_Encryption_On_EBS_Policy \
            --policy-document file://kms-key-for-encryption-on-ebs.json
      ```

   1. Attachez la politique IAM au rôle à l'aide de la commande suivante. Remplacez *111122223333* par votre ID de compte.

      ```
      aws iam attach-role-policy \
            --policy-arn arn:aws: iam::111122223333:policy/KMS_Key_For_Encryption_On_EBS_Policy \
            --role-name AmazonEKS_EBS_CSI_DriverRole
      ```

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

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électionnez une entité de confiance), procédez comme suit :

   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 `AmazonEBSCSIDriverPolicyV2`.

   1. Cochez la case à gauche du `AmazonEBSCSIDriverPolicyV2` 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\$1EBS\$1CSI\$1DriverRole*.

   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éé, choisissez le rôle dans la console pour l'ouvrir et 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 une virgule à la fin de la ligne précédente, puis ajoutez la ligne suivante après 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:ebs-csi-controller-sa"
   ```

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

1. Si vous utilisez une [clé KMS](https://aws.amazon.com/kms/) personnalisée pour le chiffrement de vos volumes Amazon EBS, personnalisez le rôle IAM en fonction des besoins. Par exemple, procédez comme suit :

   1. Dans le volet de navigation de gauche, choisissez **Politiques**.

   1. Sur la page **Politiques**, choisissez **Créer une politique**.

   1. Sur la page **Créer une politique**, choisissez l'onglet **JSON**.

   1. Copiez et collez le code suivant dans l'éditeur, en remplaçant *custom-key-arn* par l'[ARN de clé KMS](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awskeymanagementservice.html#awskeymanagementservice-key) personnalisée.

      ```
      {
            "Version":"2012-10-17",		 	 	 
            "Statement": [
              {
                "Effect": "Allow",
                "Action": [
                  "kms:CreateGrant",
                  "kms:ListGrants",
                  "kms:RevokeGrant"
                ],
                "Resource": ["arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab"],
                "Condition": {
                  "Bool": {
                    "kms:GrantIsForAWSResource": "true"
                  }
                }
              },
              {
                "Effect": "Allow",
                "Action": [
                  "kms:Encrypt",
                  "kms:Decrypt",
                  "kms:ReEncrypt*",
                  "kms:GenerateDataKey*",
                  "kms:DescribeKey"
                ],
                "Resource": ["arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab"]
              }
            ]
          }
      ```

   1. Choisissez **Suivant : Balises**.

   1. Sur la page **Ajouter des balises (facultatif)**, choisissez **Suivant : Vérifier**.

   1. Dans **Nom**, attribuez un nom unique à votre politique (par exemple *KMS\$1Key\$1For\$1Encryption\$1On\$1EBS\$1Policy*).

   1. Choisissez **Create Policy** (Créer une politique).

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

   1. Choisissez le ***AmazonEKS\$1EBS\$1CSI\$1DriverRole***dans la console pour l'ouvrir en vue de le modifier.

   1. Dans la liste déroulante **Ajouter des autorisations**, choisissez **Associer des politiques**.

   1. Dans la zone **Filter policies** (Politiques de filtre), saisissez *KMS\$1Key\$1For\$1Encryption\$1On\$1EBS\$1Policy*.

   1. Cochez la case à gauche du *KMS\$1Key\$1For\$1Encryption\$1On\$1EBS\$1Policy* renvoyé dans la recherche.

   1. Choisissez **Attacher des politiques**.

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

1. Affichez l’URL du fournisseur OIDC de votre cluster. Remplacez *my-cluster* par le nom de votre cluster. Si la sortie de la commande est `None`, consultez **Prérequis**.

   ```
   aws eks describe-cluster --name my-cluster --query "cluster.identity.oidc.issuer" --output text
   ```

   L'exemple qui suit illustre un résultat.

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

1. Créez le rôle IAM et attachez-y l'action `AssumeRoleWithWebIdentity`.

   1. Copiez le contenu suivant dans un fichier nommé `aws-ebs-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::111122223333:oidc-provider/oidc.eks.us-east-1.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE"
                },
                "Action": "sts:AssumeRoleWithWebIdentity",
                "Condition": {
                  "StringEquals": {
                    "oidc.eks.us-east-1.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:aud": "sts.amazonaws.com",
                    "oidc.eks.us-east-1.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:sub": "system:serviceaccount:kube-system:ebs-csi-controller-sa"
                  }
                }
              }
            ]
          }
      ```

   1. Créez le rôle. Vous pouvez remplacer *AmazonEKS\$1EBS\$1CSI\$1DriverRole* par un autre nom. Si vous le remplacez, assurez-vous de le remplacer dans les étapes suivantes.

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

1. Joignez une politique. AWS gère une politique AWS gérée ou vous pouvez créer votre propre politique personnalisée. Attachez la politique AWS gérée au rôle à l'aide de la commande suivante.

   ```
   aws iam attach-role-policy \
         --policy-arn arn:aws: iam::aws:policy/service-role/AmazonEBSCSIDriverPolicyV2 \
         --role-name AmazonEKS_EBS_CSI_DriverRole
   ```

1. Si vous utilisez une [clé KMS](https://aws.amazon.com/kms/) personnalisée pour le chiffrement de vos volumes Amazon EBS, personnalisez le rôle IAM en fonction des besoins. Par exemple, procédez comme suit :

   1. Copiez et collez le code suivant dans un nouveau fichier `kms-key-for-encryption-on-ebs.json`. Remplacez *custom-key-arn* par l'[ARN de clé KMS](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awskeymanagementservice.html#awskeymanagementservice-key) personnalisé.

      ```
      {
            "Version":"2012-10-17",		 	 	 
            "Statement": [
              {
                "Effect": "Allow",
                "Action": [
                  "kms:CreateGrant",
                  "kms:ListGrants",
                  "kms:RevokeGrant"
                ],
                "Resource": ["arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab"],
                "Condition": {
                  "Bool": {
                    "kms:GrantIsForAWSResource": "true"
                  }
                }
              },
              {
                "Effect": "Allow",
                "Action": [
                  "kms:Encrypt",
                  "kms:Decrypt",
                  "kms:ReEncrypt*",
                  "kms:GenerateDataKey*",
                  "kms:DescribeKey"
                ],
                "Resource": ["arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab"]
              }
            ]
          }
      ```

   1. Créez la politique. Vous pouvez remplacer *KMS\$1Key\$1For\$1Encryption\$1On\$1EBS\$1Policy* par un autre nom. Cependant, si vous le remplacez, assurez-vous de le remplacer également dans les étapes suivantes.

      ```
      aws iam create-policy \
            --policy-name KMS_Key_For_Encryption_On_EBS_Policy \
            --policy-document file://kms-key-for-encryption-on-ebs.json
      ```

   1. Attachez la politique IAM au rôle à l'aide de la commande suivante. Remplacez *111122223333* par votre ID de compte.

      ```
      aws iam attach-role-policy \
            --policy-arn arn:aws: iam::111122223333:policy/KMS_Key_For_Encryption_On_EBS_Policy \
            --role-name AmazonEKS_EBS_CSI_DriverRole
      ```

Maintenant que vous avez créé le rôle IAM du pilote CSI Amazon EBS, vous pouvez passer à la section suivante. Lorsque vous déployez le module complémentaire avec ce rôle IAM, il crée et est configuré pour utiliser un compte de service nommé `ebs-csi-controller-sa`. Le compte de service est lié à un Kubernetes `clusterrole` auquel sont attribuées les autorisations Kubernetes requises.

## Étape 2 : obtenir le pilote CSI Amazon EBS
<a name="managing-ebs-csi"></a>

Nous vous recommandons d’installer le pilote Amazon EBS CSI via le module complémentaire Amazon EKS afin d’améliorer la sécurité et de réduire la charge de travail. 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).

**Important**  
Avant d’ajouter le pilote Amazon EBS 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. Si c'est le cas, voir [Désinstallation d'un pilote CSI Amazon EBS autogéré](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/blob/master/docs/install.md#uninstalling-the-ebs-csi-driver) sur GitHub.

**Note**  
Par défaut, le rôle RBAC utilisé par le CSI EBS est autorisé à muter les nœuds afin de prendre en charge sa fonction de suppression des taches. En raison des limites de Kubernetes RBAC, cela lui permet également de muter n'importe quel autre nœud du cluster. Le graphique Helm comporte un paramètre (`node.serviceAccount.disableMutation`) qui désactive la mutation des autorisations RBAC des nœuds pour le ebs-csi-node compte de service. Lorsqu'elles sont activées, les fonctionnalités du pilote telles que la suppression des taches ne fonctionneront pas.

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

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

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