Complete a 3 Question Survey and Earn a re:Post Badge
Help improve AWS Support Official channel in re:Post and share your experience - complete a quick three-question survey to earn a re:Post badge!
Comment puis-je utiliser le stockage persistant dans Amazon EKS ?
Je souhaite utiliser le stockage persistant dans Amazon Elastic Kubernetes Service (Amazon EKS).
Brève description
Pour utiliser le stockage permanent dans Amazon EKS, suivez les étapes correspondant à l'une des méthodes suivantes :
- Déploiement et test du pilote d’interface de stockage de conteneur (CSI) Amazon Elastic Block Store (Amazon EBS).
- Déploiement et test du pilote d’interface de stockage de conteneur (CSI) Amazon Elastic File System (Amazon EFS).
Remarque : il est recommandé d'installer la version la plus récente des pilotes. Pour savoir comment installer les derniers pilotes, consultez les pages aws-ebs-csi-driver et aws-efs-csi-driver sur le site Web de GitHub.
Résolution
Remarque : si des erreurs surviennent lorsque vous exécutez des commandes de l’interface de la ligne de commande AWS (AWS CLI), consultez la page Résoudre les erreurs liées à AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l’AWS CLI.
Prérequis :
- Installez l’AWS CLI.
- Utilisez kubectl version 1.14 ou ultérieure pour les commandes. Pour en savoir plus, consultez la page Installation ou mise à jour de kubectl.
- Définissez les autorisations Gestion des identités et des accès AWS (AWS IAM) sur Créer. Ensuite, attachez une politique au rôle de composant master Amazon EKS CSI Driver Role.
- Créez votre cluster Amazon EKS et joignez-y vos composants master.
Remarque : exécutez la commande kubectl pour obtenir les nœuds, afin de vérifier que vos composants master sont bien attachés à votre cluster. - Pour vérifier l’existence du fournisseur AWS IAM OpenID Connect (OIDC) pour votre cluster, exécutez la commande suivante :
Remarque : remplacez your_cluster_name par le nom de votre cluster.aws eks describe-cluster --name your_cluster_name --query "cluster.identity.oidc.issuer" --output text
- Pour vérifier la configuration de votre fournisseur IAM OIDC, exécutez la commande suivante :
Remarque : remplacez ID of the oidc provider par l’ID de votre OIDC. Si le message d’erreur « No OpenIDConnect provider found in your account » s’affiche, vous devez créer un fournisseur IAM OIDC.aws iam list-open-id-connect-providers | grep <ID of the oidc provider>
- Installez ou mettez à jour eksctl. Pour obtenir des instructions, consultez la section Installation sur le site Web d'eksctl.
- Exécutez la commande suivante pour créer un fournisseur IAM OIDC :
Remarque : remplacez my-cluster par le nom de votre cluster.eksctl utils associate-iam-oidc-provider --cluster my-cluster --approve
Pilote CSI Amazon EBS
Déploiement du pilote CSI Amazon EBS
Procédez comme suit :
-
Créez un fichier de politique de confiance IAM selon l’exemple suivant :
cat <<EOF > trust-policy.json { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::YOUR_AWS_ACCOUNT_ID:oidc-provider/oidc.eks.YOUR_AWS_REGION.amazonaws.com/id/<your OIDC ID>" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "oidc.eks.YOUR_AWS_REGION.amazonaws.com/id/<XXXXXXXXXX45D83924220DC4815XXXXX>:aud": "sts.amazonaws.com", "oidc.eks.YOUR_AWS_REGION.amazonaws.com/id/<XXXXXXXXXX45D83924220DC4815XXXXX>:sub": "system:serviceaccount:kube-system:ebs-csi-controller-sa" } } } ] } EOF
Remarque : remplacez YOUR_AWS_ACCOUNT_ID par l’ID de votre compte AWS, YOUR_AWS_REGION par votre région AWS et your OIDC ID par l’ID de votre OIDC.
-
Créez un rôle IAM nommé AmazonEKS_EBS_CSI_DriverRole :
aws iam create-role --role-name AmazonEKS_EBS_CSI_DriverRole --assume-role-policy-document file://"trust-policy.json"
-
Attachez la politique IAM gérée par AWS du pilote au rôle IAM :
aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy --role-name AmazonEKS_EBS_CSI_DriverRole
-
Déployez le pilote CSI Amazon EBS.
Remarque : pour déployer le pilote CSI EBS, vous pouvez utiliser Kustomize, Helm ou un module complémentaire géré par Amazon EKS. Pour obtenir des instructions sur le déploiement du pilote CSI EBS, consultez la page Installation du site Web de GitHub.
Test du pilote CSI Amazon EBS
Testez votre pilote Amazon EBS CSI à l'aide d'un exemple d'application qui utilise le provisionnement dynamique pour les pods. Le volume Amazon EBS est alors provisionné à la demande.
Pilote CSI Amazon EFS
Création d'un rôle IAM pour le pilote CSI
Procédez comme suit :
-
Téléchargez le document de politique IAM à partir de GitHub :
curl -o iam-policy-example.json https://raw.githubusercontent.com/kubernetes-sigs/aws-efs-csi-driver/master/docs/iam-policy-example.json
-
Créez une politique IAM :
aws iam create-policy --policy-name AmazonEKS_EFS_CSI_Driver_Policy --policy-document file://iam-policy-example.json
-
Pour déterminer l'ID du fournisseur OIDC de votre cluster, exécutez la commande suivante :
aws eks describe-cluster --name your_cluster_name --query "cluster.identity.oidc.issuer" --output text
Remarque : remplacez your_cluster_name par le nom de votre cluster.
-
Créez la politique de confiance IAM suivante, puis accordez l’action AssumeRoleWithWebIdentity à votre compte de service Kubernetes :
cat <<EOF > trust-policy.json { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::YOUR_AWS_ACCOUNT_ID:oidc-provider/oidc.eks.YOUR_AWS_REGION.amazonaws.com/id/<XXXXXXXXXX45D83924220DC4815XXXXX>" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "oidc.eks.YOUR_AWS_REGION.amazonaws.com/id/<XXXXXXXXXX45D83924220DC4815XXXXX>:sub": "system:serviceaccount:kube-system:efs-csi-controller-sa" } } } ] } EOF
Remarque : remplacez YOUR_AWS_ACCOUNT_ID par l’ID de votre compte, YOUR_AWS_REGION par votre région AWS et XXXXXXXXXX45D83924220DC4815XXXXX par l'ID du fournisseur OIDC de votre cluster.
-
Créez un rôle IAM :
aws iam create-role --role-name AmazonEKS_EFS_CSI_DriverRole --assume-role-policy-document file://"trust-policy.json"
-
Attachez votre nouvelle politique IAM au rôle :
aws iam attach-role-policy --policy-arn arn:aws:iam::<AWS_ACCOUNT_ID>:policy/AmazonEKS_EFS_CSI_Driver_Policy --role-name AmazonEKS_EFS_CSI_DriverRole
-
Enregistrez le contenu suivant dans un fichier nommé efs-service-account.yaml :
apiVersion: v1 kind: ServiceAccount metadata: labels: app.kubernetes.io/name: aws-efs-csi-driver name: efs-csi-controller-sa namespace: kube-system annotations: eks.amazonaws.com/role-arn: arn:aws:iam::<AWS_ACCOUNT_ID>:role/AmazonEKS_EFS_CSI_DriverRole
-
Créez le compte de service Kubernetes sur votre cluster :
kubectl apply -f efs-service-account.yaml
Remarque : le compte de service Kubernetes nommé efs-csi-controller-sa est annoté avec le rôle IAM que vous avez créé.
-
Téléchargez le manifeste depuis le registre public Amazon ECR et utilisez les images pour installer le pilote :
$ kubectl kustomize "github.com/kubernetes-sigs/aws-efs-csi-driver/deploy/kubernetes/overlays/stable/?ref=release-1.5" > public-ecr-driver.yaml
Remarque : pour installer le pilote CSI EFS, vous pouvez utiliser Helm et Kustomize avec un registre privé ou public AWS. Pour obtenir des instructions sur l'installation du pilote CSI EFS, consultez la page AWS EFS CSI driver sur le site Web de GitHub.
-
Modifiez le fichier public-ecr-driver.yaml et annotez la section du compte de service Kubernetes efs-csi-controller-sa avec l'ARN du rôle IAM :
apiVersion: v1 kind: ServiceAccount metadata: labels: app.kubernetes.io/name: aws-efs-csi-driver annotations: eks.amazonaws.com/role-arn: arn:aws:iam::<accountid>:role/AmazonEKS\_EFS\_CSI\_DriverRole name: efs-csi-controller-sa namespace: kube-system
Déploiement du pilote CSI Amazon EFS
Procédez comme suit :
-
Appliquez le manifeste :
$ kubectl apply -f public-ecr-driver.yaml
-
Si votre cluster ne contient que des pods AWS Fargate (sans nœuds), déployez le pilote à l’aide de la commande suivante (pour toutes les régions) :
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-efs-csi-driver/master/deploy/kubernetes/base/csidriver.yaml
Création d’un système de fichiers Amazon EFS
Procédez comme suit :
- Pour obtenir l'ID du cloud privé virtuel (VPC) de votre cluster Amazon EKS, exécutez la commande suivante :
Remarque : remplacez your_cluster_name par le nom de votre cluster.aws eks describe-cluster --name your_cluster_name --query "cluster.resourcesVpcConfig.vpcId" --output text
- Pour obtenir la plage CIDR de votre cluster de VPC, exécutez la commande suivante :
Remarque : remplacez la valeur YOUR_VPC_ID par votre ID de VPC.aws ec2 describe-vpcs --vpc-ids YOUR_VPC_ID --query "Vpcs[].CidrBlock" --output text
- Créez un groupe de sécurité qui autorise le trafic entrant du système de fichiers réseau (NFS) de vos points de montage Amazon EFS :
Remarque : remplacez YOUR_VPC_ID par votre ID de VPC. Notez le GroupId pour pouvoir l’utiliser ultérieurement.aws ec2 create-security-group --description efs-test-sg --group-name efs-sg --vpc-id YOUR_VPC_ID
- Pour autoriser les ressources de votre VPC à communiquer avec votre système de fichiers Amazon EFS, ajoutez une règle entrante NFS :
Remarque : remplacez YOUR_VPC_CIDR par votre CIDR de VPC et sg-xxx par l'ID de votre groupe de sécurité.aws ec2 authorize-security-group-ingress --group-id sg-xxx --protocol tcp --port 2049 --cidr YOUR_VPC_CIDR
- Créez un système de fichiers Amazon EFS pour votre cluster Amazon EKS :
Remarque : notez le FileSystemId pour pouvoir l’utiliser ultérieurement.aws efs create-file-system --creation-token eks-efs
- Pour créer une cible de montage pour Amazon EFS, exécutez la commande suivante :
Important : vous devez exécuter la commande précédente pour toutes les zones de disponibilité avec l’identifiant SubnetID dans la zone de disponibilité où se trouvent vos composants master. Remplacez FileSystemId par l'ID de votre système de fichiers EFS, sg-xxx par l'ID de votre groupe de sécurité et SubnetID par l'ID du sous-réseau de votre composant master. Pour créer des cibles de montage dans plusieurs sous-réseaux, vous devez exécuter la commande pour chaque ID de sous-réseau. Il est recommandé de créer une cible de montage dans chaque zone de disponibilité où s’exécutent vos composants master. Vous pouvez créer des cibles de montage pour toutes les zones de disponibilité où les composants master sont lancés. Toutes les instances Amazon Elastic Compute Cloud (Amazon EC2) appartenant à ces zones de disponibilité pourront alors utiliser le système de fichiers.aws efs create-mount-target --file-system-id FileSystemId --subnet-id SubnetID --security-group sg-xxx
Test du pilote CSI Amazon EFS
Pour déployer deux pods qui écrivent dans le même fichier, consultez la page Multiple Pods Read Write Many sur le site Web de GitHub.
Informations connexes
Vidéos associées


Contenus pertinents
- demandé il y a 8 moislg...
- demandé il y a 3 moislg...
- Réponse acceptéedemandé il y a 7 moislg...
- demandé il y a 6 moislg...