Stockage Kubernetes volumes avec Amazon EBS - Amazon EKS

Aidez à améliorer cette page

Vous souhaitez contribuer à ce guide de l'utilisateur ? Faites défiler cette page vers le bas et sélectionnez Modifier cette page sur GitHub. Vos contributions aideront à améliorer notre guide de l'utilisateur pour tous.

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.

Stockage Kubernetes volumes avec Amazon EBS

Le pilote Amazon Elastic Block Store (AmazonEBS) Container Storage Interface (CSI) gère le cycle de vie des EBS volumes Amazon en tant que stockage pour le Kubernetes Volumes que vous créez. Le EBS CSI chauffeur Amazon crée EBS des volumes Amazon pour ces types de Kubernetes volumes : volumes éphémères génériques et volumes persistants.

Considérations

  • Vous ne pouvez pas monter de EBS volumes Amazon sur Fargate Pods.

  • Vous pouvez exécuter le EBS CSI contrôleur Amazon sur les nœuds Fargate, mais le nœud Amazon EBS CSI DaemonSet ne peut être exécuté que sur EC2 des instances Amazon.

  • Support sera fourni pour la dernière version du module complémentaire et une version précédente. Les bogues ou vulnérabilités découverts dans la dernière version seront rétroportés vers la version précédente dans une nouvelle version mineure.

Important

Pour utiliser la fonctionnalité de capture instantanée du EBS CSI pilote Amazon, vous devez d'abord installer le contrôleur de CSI capture instantanée. Pour de plus amples informations, veuillez consulter Activer la fonctionnalité de capture instantanée pour les CSI volumes.

Prérequis

  • 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
  • Un existant AWS Identity and Access Management (IAM) OpenID Connect (OIDC) fournisseur pour votre cluster. Pour déterminer si vous en avez déjà un, ou pour en créer un, consultez Créez un IAM OIDC fournisseur pour votre cluster.

  • Si vous utilisez une politique PodSecurityPolicy restreinte au niveau du cluster, assurez-vous que le module complémentaire dispose d'autorisations suffisantes pour être déployé. Pour les autorisations requises par chaque module complémentaire Pod, voir la définition du manifeste complémentaire correspondant sur GitHub.

Étape 1 : créer un IAM rôle

Le EBS CSI plugin Amazon nécessite IAM des autorisations pour passer des appels AWS APIs en votre nom. Si vous ne suivez pas ces étapes, la tentative d'installation du module complémentaire et son exécution s'kubectl describe pvcafficheront failed to provision volume with StorageClass avec un could not create volume in EC2: UnauthorizedOperation message d'erreur. Pour plus d'informations, voir Configurer l'autorisation de conduire sur GitHub.

Note

Pods aura accès aux autorisations attribuées au IAM rôle, sauf si vous bloquez l'accès àIMDS. Pour de plus amples informations, veuillez consulter Sécurisez EKS les clusters Amazon grâce aux meilleures pratiques.

La procédure suivante explique comment créer un IAM rôle et y associer la politique AWS gérée. Pour ce faire, vous pouvez utiliser eksctl, la AWS Management Console ou la AWS CLI.

Note

Les étapes spécifiques de cette procédure sont écrites pour utiliser le pilote en tant que EKS module complémentaire Amazon. 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 de conduire sur GitHub.

eksctl
Pour créer votre IAM rôle de EBS CSI plugin Amazon avec eksctl
  1. Créez un IAM rôle 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 IAM rôle et associer la politique AWS gérée à l'aide de la commande suivante. Remplacez mon-cluster avec le nom de votre cluster. La commande déploie une AWS CloudFormation pile qui crée un IAM rôle et y attache la IAM politique. Si votre cluster se trouve dans AWS GovCloud (USA Est) ou AWS GovCloud (USA Ouest) Régions AWS, remplacez-le pararn:aws:. arn:aws-us-gov:

    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/AmazonEBSCSIDriverPolicy \ --approve
  2. Si vous utilisez une KMSclé personnalisée pour le chiffrement de vos EBS volumes Amazon, personnalisez le IAM rôle 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. custom-key-arnRemplacez-le par la KMSclé personnaliséeARN.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": ["custom-key-arn"], "Condition": { "Bool": { "kms:GrantIsForAWSResource": "true" } } }, { "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": ["custom-key-arn"] } ] }
    2. Créez la politique. Vous pouvez remplacer KMS_Key_For_Encryption_On_EBS_Policy 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
    3. Attachez la IAM politique au rôle à l'aide de la commande suivante. Remplacez 111122223333 par votre ID de compte. Si votre cluster se trouve dans AWS GovCloud (USA Est) ou AWS GovCloud (USA Ouest) Régions AWS, remplacez-le pararn:aws:. arn:aws-us-gov:

      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
Pour créer votre IAM rôle de EBS CSI plug-in Amazon avec le AWS Management Console
  1. Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/.

  2. Dans le panneau de navigation de gauche, choisissez Rôles.

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

  4. 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).

    2. Pour le fournisseur d'identité, choisissez le OpenID Connect fournisseur URL pour votre cluster (comme indiqué dans la section Vue d'ensemble sur AmazonEKS).

    3. Pour Audience, choisissez sts.amazonaws.com.

    4. Choisissez Suivant.

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

    1. Dans la zone Filter policies (Politiques de filtre), saisissez AmazonEBSCSIDriverPolicy.

    2. Cochez la case à gauche du AmazonEBSCSIDriverPolicy renvoyé dans la recherche.

    3. Choisissez Suivant.

  6. 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_EBS_CSI_DriverRole.

    2. 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 balisesIAM, consultez les IAMressources relatives au balisage dans le guide de l'IAMutilisateur.

    3. Sélectionnez Créer un rôle.

  7. Une fois le rôle créé, choisissez le rôle dans la console pour l'ouvrir et le modifier.

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

  9. 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. region-codeRemplacez-le par Région AWS celui dans lequel se trouve votre cluster. EXAMPLED539D4633E53DE1B71EXAMPLERemplacez-le par l'ID du OIDC fournisseur de votre cluster.

    "oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:sub": "system:serviceaccount:kube-system:ebs-csi-controller-sa"
  10. Sélectionnez Update Trust Policy (Mettre à jour la politique d'approbation) pour terminer.

  11. Si vous utilisez une KMSclé personnalisée pour le chiffrement de vos EBS volumes Amazon, personnalisez le IAM rôle selon vos besoins. Par exemple, procédez comme suit :

    1. Dans le panneau de navigation de gauche, choisissez Politiques.

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

    3. Sur la page Créer une politique, choisissez l'JSONonglet.

    4. Copiez et collez le code suivant dans l'éditeur, en le custom-key-arn remplaçant par la KMSclé personnaliséeARN.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": ["custom-key-arn"], "Condition": { "Bool": { "kms:GrantIsForAWSResource": "true" } } }, { "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": ["custom-key-arn"] } ] }
    5. Choisissez Suivant : Balises.

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

    7. Dans Nom, attribuez un nom unique à votre politique (par exemple KMS_Key_For_Encryption_On_EBS_Policy).

    8. Choisissez Create Policy (Créer une politique).

    9. Dans le panneau de navigation de gauche, choisissez Rôles.

    10. Cliquez sur le bouton AmazonEKS_EBS_CSI_DriverRoledans la console pour l'ouvrir pour le modifier.

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

    12. Dans la zone Filter policies (Politiques de filtre), saisissez KMS_Key_For_Encryption_On_EBS_Policy.

    13. Cochez la case à gauche du KMS_Key_For_Encryption_On_EBS_Policy renvoyé dans la recherche.

    14. Choisissez Attach Policies (Attacher des politiques).

AWS CLI
Pour créer votre IAM rôle de EBS CSI plug-in Amazon avec le AWS CLI
  1. Consultez le OIDC fournisseur de votre clusterURL. 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
  2. Créez le IAM rôle en accordant l'AssumeRoleWithWebIdentityaction.

    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. Si votre cluster se trouve dans AWS GovCloud (USA Est) ou AWS GovCloud (USA Ouest) Régions AWS, remplacez-le pararn:aws:. arn:aws-us-gov:

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::111122223333:oidc-provider/oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:aud": "sts.amazonaws.com", "oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:sub": "system:serviceaccount:kube-system:ebs-csi-controller-sa" } } } ] }
    2. Créez le rôle. Vous pouvez remplacer AmazonEKS_EBS_CSI_DriverRole 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"
  3. 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. Si votre cluster se trouve dans AWS GovCloud (USA Est) ou AWS GovCloud (USA Ouest) Régions AWS, remplacez-le pararn:aws:. arn:aws-us-gov:

    aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy \ --role-name AmazonEKS_EBS_CSI_DriverRole
  4. Si vous utilisez une KMSclé personnalisée pour le chiffrement de vos EBS volumes Amazon, personnalisez le IAM rôle 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. custom-key-arnRemplacez-le par la KMSclé personnaliséeARN.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": ["custom-key-arn"], "Condition": { "Bool": { "kms:GrantIsForAWSResource": "true" } } }, { "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": ["custom-key-arn"] } ] }
    2. Créez la politique. Vous pouvez remplacer KMS_Key_For_Encryption_On_EBS_Policy 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
    3. Attachez la IAM politique au rôle à l'aide de la commande suivante. Remplacez 111122223333 par votre ID de compte. Si votre cluster se trouve dans AWS GovCloud (USA Est) ou AWS GovCloud (USA Ouest) Régions AWS, remplacez-le pararn:aws:. arn:aws-us-gov:

      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 IAM rôle de EBS CSI chauffeur Amazon, vous pouvez passer à la section suivante. Lorsque vous déployez le module complémentaire avec ce IAM rôle, 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 clusterroleauquel est attribué le requis Kubernetes autorisations.

Étape 2 : obtenir le EBS CSI pilote Amazon

Nous vous recommandons d'installer le EBS CSI pilote Amazon via le EKS module complémentaire Amazon afin d'améliorer la sécurité et de réduire la charge de travail. Pour ajouter un EKS module complémentaire Amazon à votre cluster, consultezCréation d'un EKS module complémentaire Amazon. Pour plus d'informations sur les modules complémentaires, voir EKSModules complémentaires Amazon.

Important

Avant d'ajouter le EBS pilote Amazon en tant que EKS module complémentaire Amazon, vérifiez qu'aucune version autogérée du pilote n'est installée sur votre cluster. Dans ce cas, consultez la section Désinstaller un pilote Amazon autogéré sur EBS CSI GitHub.

Sinon, si vous souhaitez une installation autogérée du EBS CSI pilote Amazon, consultez Installation sur GitHub.

Étape 3 : Déployer un exemple d'application

Vous pouvez déployer une variété d'applications types et les modifier selon vos besoins. Pour plus d’informations, consultez .Kubernetes Exemples sur GitHub.