Aidez à améliorer cette page
Pour contribuer à ce guide de l’utilisateur, cliquez sur le lien Modifier cette page sur GitHub qui se trouve dans le volet droit de chaque page.
Utilisation du stockage en système de fichiers Elastic avec Amazon EFS
Amazon Elastic File System (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)
Considérations
-
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
pour les volumes persistants avec les nœuds Fargate, mais vous pouvez utiliser l’approvisionnement statique . -
L’approvisionnement dynamique
nécessite la version 1.2 ou ultérieure du pilote. Vous pouvez utiliser l’approvisionnement statique pour les volumes persistants à l’aide de la version 1.1du pilote sur n’importe quelle version de cluster Amazon EKS prise en charge (voir Versions Amazon EKS prises en charge). -
La version 1.3.2
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
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. Par exemple, un quota de 1 000 points d’accès peut être créé pour chaque système de fichiers Amazon EFS. Pour plus d'informations, consultez les quotas de ressources Amazon EFS que vous ne pouvez pas modifier.
-
À partir de la version 2.0.0
, ce pilote est passé de l’utilisation de stunnelà celle deefs-proxypour les connexions TLS. Lorsqueefs-proxyest 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.
Prérequis
-
Le pilote CSI Amazon EFS nécessite des autorisations de gestion des identités et des accès (IAM) AWS.
-
AWS suggère d’utiliser EKS Pod Identities. Pour de plus amples informations, consultez Présentation de la configuration des identités du pod EKS.
-
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.
-
-
Version
2.12.3ou ultérieure ou version1.27.160ou ultérieure de l’interface de la ligne de commande AWS (AWS CLI) installée et configurée sur votre appareil ou dans AWS CloudShell. Pour vérifier votre version actuelle, utilisezaws --version | cut -d / -f2 | cut -d ' ' -f1. Les gestionnaires de package tels queyum,apt-getou Homebrew pour macOS ont souvent plusieurs versions de retard par rapport à la dernière version de l’AWS CLI. Pour installer la dernière version, consultez les sections Installation et Configuration rapide avec aws configure du Guide de l’utilisateur de l’interface de la ligne de commande AWS. La version de l’AWS CLI installée dans AWS CloudShell peut également être plusieurs versions derrière la dernière version. Pour la mettre à jour, consultez la section Installation de l’AWS CLI dans votre répertoire personnel dans le Guide de l’utilisateur AWS CloudShell. -
L’outil de ligne de commande
kubectlest installé sur votre appareil ou dans 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 est1.29, vous pouvez utiliser la versionkubectl1.28,1.29ou1.30. Pour installer ou mettre à niveaukubectl, veuillez consulter Configuration de kubectl et eksctl.
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
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 attachez-y la politique gérée AWS requise. Pour mettre en œuvre cette procédure, vous pouvez utiliser l’un des outils suivants :
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 d’informations sur les installations autogérées, consultez la section Configurer les autorisations du pilote
eksctl
Si vous utilisez les identités du pod
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
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
Exécutez la commande suivante pour créer un rôle IAM avec AWS Management Console.
-
Ouvrez la console IAM à l’adresse https://console.aws.amazon.com/iam/
. -
Dans le volet de navigation de gauche, choisissez Rôles.
-
Sur la page Rôles, choisissez Créer un rôle.
-
Sur la page Select trusted entity (Sélectionner une entité de confiance), procédez comme suit :
-
Si vous utilisez les identités de pod EKS :
-
Sous la section Type d’entité de confiance, sélectionnez Service AWS.
-
Dans le menu déroulant Service ou cas d’utilisation, sélectionnez EKS.
-
Dans la section Cas d’utilisation, sélectionnez EKS – Identité du pod.
-
Choisissez Suivant.
-
-
Si vous utilisez des rôles IAM pour des comptes de service :
-
Dans la section Trusted entity type (Type d'entité de confiance), sélectionnez Web identity (Identité web).
-
Pour Fournisseur d'identité, choisissez l'URL du fournisseur OpenID Connect pour votre cluster (comme indiqué sous Présentation dans Amazon EKS).
-
Pour Audience, choisissez
sts.amazonaws.com. -
Choisissez Suivant.
-
-
-
Sur la page Add permissions (Ajouter des autorisations), procédez comme suit :
-
Dans la zone Filter policies (Politiques de filtre), saisissez
AmazonEFSCSIDriverPolicy. -
Cochez la case à gauche du
AmazonEFSCSIDriverPolicyrenvoyé dans la recherche. -
Choisissez Suivant.
-
-
Sur la page Name, review, and create (Nommer, vérifier et créer), procédez comme suit :
-
Pour Role name (Nom de rôle), saisissez un nom unique pour votre rôle, par exemple,
AmazonEKS_EFS_CSI_DriverRole. -
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 dans le Guide de l'utilisateur IAM.
-
Sélectionnez Créer un rôle.
-
-
Une fois le rôle créé :
-
Si vous utilisez les identités de pod EKS :
-
Ouvrez la console Amazon EKS
. -
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.
-
Choisissez l'onglet Access.
-
Dans Associations d’identité du pod, sélectionnez Créer.
-
Choisissez la liste déroulante du rôle IAM et sélectionnez le rôle que vous venez de créer.
-
Sélectionnez le champ Espace de noms Kubernetes et saisissez
kube-system. -
Sélectionnez le champ Compte de service Kubernetes et saisissez
efs-csi-controller-sa. -
Choisissez Créer.
-
Pour plus d’informations sur la création d’associations d’identités de pod, consultez Créer une association d’identité du pod (console AWS).
-
-
Si vous utilisez des rôles IAM pour des comptes de service :
-
Choisissez le rôle pour l’ouvrir en vue de le modifier.
-
Sélectionnez l'onglet Trust relationships (Relations d'approbation), puis Edit trust policy (Modifier la politique d'approbation).
-
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 région AWS 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-*", -
Modifiez l'opérateur
Conditionde"StringEquals"en"StringLike". -
Sélectionnez Update Trust Policy (Mettre à jour la politique d'approbation) pour terminer.
-
-
AWS CLI
Exécutez les commandes suivantes pour créer un rôle IAM avec la CLI AWS.
Si vous utilisez les identités du pod
-
Créez le rôle IAM qui accorde les actions
AssumeRoleetTagSessionau servicepods.eks.amazonaws.com.-
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" ] } ] } -
Créez le rôle. Remplacez
my-clusterpar le nom de votre cluster. Vous pouvez aussi remplacerAmazonEKS_EFS_CSI_DriverRolepar 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"
-
-
Exécutez la commande suivante pour attacher la politique gérée AWS à votre rôle.
aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/service-role/AmazonEFSCSIDriverPolicy \ --role-name $role_name -
Exécutez la commande suivante pour créer l’association d’identité de pod. Remplacer
arn:aws:iam::<111122223333>:role/my-rolepar le rôle créé lors des étapes précédentes.aws eks create-pod-identity-association --cluster-name $cluster_name --role-arn {arn-aws}iam::<111122223333>:role/my-role --namespace kube-system --service-account efs-csi-controller-sa -
Pour plus d’informations sur la création d’associations d’identités de pod, consultez Créer une association d’identité du pod (console AWS).
Si vous utilisez des rôles IAM pour des comptes de service
-
Affichez l’URL du fournisseur OIDC de votre cluster. Remplacez
my-clusterpar le nom de votre cluster. Vous pouvez aussi remplacerAmazonEKS_EFS_CSI_DriverRolepar 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 textL'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. -
Créez le rôle IAM qui accorde l'action
AssumeRoleWithWebIdentity.-
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::<111122223333>:oidc-provider/oidc.eks.<region-code>.amazonaws.com/id/<EXAMPLED539D4633E53DE1B71EXAMPLE>" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringLike": { "oidc.eks.region-code.amazonaws.com/id/<EXAMPLED539D4633E53DE1B71EXAMPLE>:sub": "system:serviceaccount:kube-system:efs-csi-*", "oidc.eks.region-code.amazonaws.com/id/<EXAMPLED539D4633E53DE1B71EXAMPLE>:aud": "sts.amazonaws.com" } } } ] } -
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"
-
-
Exécutez la commande suivante pour attacher la politique gérée AWS à votre rôle.
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
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. Pour plus d'informations sur les modules complémentaires, voir Modules complémentaires Amazon EKS. Si vous ne pouvez pas utiliser le module complémentaire Amazon EKS, nous vous encourageons à signaler un problème expliquant pourquoi vous ne pouvez pas le faire dans le référentiel GitHub de la feuille de route des conteneurs
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. Si tel est le cas, consultez la section Désinstallation du pilote CSI Amazon EFS
Sinon, si vous souhaitez installer vous-même le pilote CSI Amazon EFS, consultez la section Installation
Étape 3 : Créer un système de fichiers Amazon EFS
Pour créer un système de fichiers Amazon EFS, consultez la section Créer un système de fichiers Amazon EFS pour Amazon EKS
Étape 4 : 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 la section Exemples