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.
Configurer le plug-in Amazon VPC CNI pour utiliser IRSA
Le plug-in Amazon VPC CNI pour Kubernetes est le plug-in réseau pour
-
Nécessite des autorisations AWS Identity and Access Management (IAM). Si votre cluster utilise la
IPv4
famille, les autorisations sont spécifiées dans la politiqueAmazonEKS_CNI_Policy
AWS gérée. Si votre cluster utilise cetteIPv6
famille, les autorisations doivent être ajoutées à une politique IAM que vous créez ; pour obtenir des instructions, reportez-vous Créer une politique IAM pour les clusters qui utilisent la famille IPv6 à. Vous pouvez attacher cette politique au rôle IAM de nœud Amazon EKS ou à un rôle IAM distinct. Pour obtenir des instructions sur la manière d'associer la politique au rôle IAM du nœud Amazon EKS, consultezRôle IAM de nœud Amazon EKS. Nous vous recommandons de l'affecter à un rôle séparé, comme détaillé dans cette rubrique. -
Crée et est configuré pour utiliser un compte de service Kubernetes nommé
aws-node
lors de son déploiement. Le compte de service est lié à unclusterrole
Kubernetes nomméaws-node
, qui reçoit les autorisations Kubernetes requises.
Note
Les pods du plugin Amazon VPC CNI pour Kubernetes ont accès aux autorisations attribuées au rôle IAM du nœud Amazon EKS, sauf si vous bloquez l'accès à IMDS. Pour plus d'informations, consultez Restreindre l'accès au profil d'instance affecté au composant master
-
Un cluster Amazon EKS existant. Pour en déployer un, consultez Mise en route avec Amazon EKS.
-
Un fournisseur IAM ( AWS Identity and Access Management) (IAM) OpenID Connect (OIDC) existant pour votre cluster. Pour déterminer si vous en avez déjà un, ou pour en créer un, consultez Créer un fournisseur d'identité OIDC IAM pour votre cluster.
Étape 1 : créer le plugin Amazon VPC CNI pour le rôle IAM de Kubernetes
-
Déterminez la famille d'adresses IP de votre cluster.
aws eks describe-cluster --name my-cluster | grep ipFamily
L'exemple qui suit illustre un résultat.
"ipFamily": "ipv4"
La sortie peut renvoyer
ipv6
à la place. -
Créez le rôle IAM. Vous pouvez utiliser
eksctl
oukubectl
et la AWS CLI pour créer votre rôle IAM.- eksctl
-
-
Créez un rôle IAM et attachez la politique IAM au rôle avec la commande qui correspond à la famille d'adresses IP de votre cluster. La commande crée et déploie une AWS CloudFormation pile qui crée un rôle IAM, y attache la politique que vous spécifiez et annote le compte de
aws-node
service Kubernetes existant avec l'ARN du rôle IAM créé.-
IPv4
Remplacez
my-cluster
par votre propre valeur.eksctl create iamserviceaccount \ --name aws-node \ --namespace kube-system \ --cluster my-cluster \ --role-name AmazonEKSVPCCNIRole \ --attach-policy-arn arn:aws: iam::aws:policy/AmazonEKS_CNI_Policy \ --override-existing-serviceaccounts \ --approve
-
IPv6
Remplacez
my-cluster
par votre propre valeur. Remplacez111122223333
par l'ID de votre compte et remplacezAmazonEKS_CNI_IPv6_Policy
par le nom de votre politiqueIPv6
. Si vous n'avez pas deIPv6
politique, reportez-vous Créer une politique IAM pour les clusters qui utilisent la famille IPv6 à la section pour en créer une. Pour utiliserIPv6
avec votre cluster, ce dernier doit répondre à plusieurs exigences. Pour de plus amples informations, veuillez consulter En savoir plus sur IPv6 les adresses des clusters, des pods et des services.eksctl create iamserviceaccount \ --name aws-node \ --namespace kube-system \ --cluster my-cluster \ --role-name AmazonEKSVPCCNIRole \ --attach-policy-arn arn:aws: iam::111122223333:policy/AmazonEKS_CNI_IPv6_Policy \ --override-existing-serviceaccounts \ --approve
-
-
- kubectl et la CLI AWS
-
-
Consultez l'URL du fournisseur OIDC de votre cluster.
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
Si aucune sortie n'est renvoyée, vous devez créer un fournisseur OIDC IAM pour votre cluster.
-
Copiez le contenu suivant dans un fichier nommé
vpc-cni-trust-policy.json
. Remplacez111122223333
par votre ID de compte etEXAMPLED539D4633E53DE1B71EXAMPLE
par la sortie renvoyée à l'étape précédente. Remplacezregion-code
par la AWS région dans laquelle se trouve votre cluster.{ "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:aws-node" } } } ] }
-
Créez le rôle. Vous pouvez remplacer
AmazonEKSVPCCNIRole
par n'importe quel nom que vous choisissez.aws iam create-role \ --role-name AmazonEKSVPCCNIRole \ --assume-role-policy-document file://"vpc-cni-trust-policy.json"
-
Attachez la politique IAM requise au rôle. Exécutez la commande qui correspond à la famille d'adresses IP de votre cluster.
-
IPv4
aws iam attach-role-policy \ --policy-arn arn:aws: iam::aws:policy/AmazonEKS_CNI_Policy \ --role-name AmazonEKSVPCCNIRole
-
IPv6
Remplacez
111122223333
par l'ID de votre compte etAmazonEKS_CNI_IPv6_Policy
par le nom de votre politiqueIPv6
. Si vous n'avez pas deIPv6
politique, reportez-vous Créer une politique IAM pour les clusters qui utilisent la famille IPv6 à la section pour en créer une. Pour utiliserIPv6
avec votre cluster, ce dernier doit répondre à plusieurs exigences. Pour de plus amples informations, veuillez consulter En savoir plus sur IPv6 les adresses des clusters, des pods et des services.aws iam attach-role-policy \ --policy-arn arn:aws: iam::111122223333:policy/AmazonEKS_CNI_IPv6_Policy \ --role-name AmazonEKSVPCCNIRole
-
-
Exécutez la commande suivante pour annoter le compte de service
aws-node
avec l'ARN du rôle IAM que vous avez créé précédemment. Remplacez lesexample values
par vos propres valeurs.kubectl annotate serviceaccount \ -n kube-system aws-node \ eks.amazonaws.com/role-arn=arn:aws: iam::111122223333:role/AmazonEKSVPCCNIRole
-
-
(Facultatif) Configurez le type de point de terminaison du service AWS Security Token utilisé par votre compte de service Kubernetes. Pour de plus amples informations, veuillez consulter Configurer le point de terminaison du service AWS Security Token pour un compte de service.
Étape 2 : redéployer le plugin Amazon VPC CNI pour Kubernetes Pods
-
Supprimez et recréez tous les pods existants associés au compte de service pour appliquer les variables d'environnement d'identification. L'annotation n'est pas appliquée aux pods actuellement en cours d'exécution sans l'annotation. La commande suivante supprime les
aws-node
DaemonSet pods existants et les déploie avec l'annotation du compte de service.kubectl delete Pods -n kube-system -l k8s-app=aws-node
-
Vérifiez que les Pods ont tous redémarré.
kubectl get pods -n kube-system -l k8s-app=aws-node
-
Décrivez l'un des pods et vérifiez que les variables d'
AWS_ROLE_ARN
environnementAWS_WEB_IDENTITY_TOKEN_FILE
et existent.cpjw7
Remplacez-le par le nom de l'un de vos pods renvoyé dans le résultat de l'étape précédente.kubectl describe pod -n kube-system aws-node-cpjw7 | grep 'AWS_ROLE_ARN:\|AWS_WEB_IDENTITY_TOKEN_FILE:'
L'exemple qui suit illustre un résultat.
AWS_ROLE_ARN: arn:aws: iam::111122223333:role/AmazonEKSVPCCNIRole AWS_WEB_IDENTITY_TOKEN_FILE: /var/run/secrets/eks.amazonaws.com/serviceaccount/token AWS_ROLE_ARN: arn:aws: iam::111122223333:role/AmazonEKSVPCCNIRole AWS_WEB_IDENTITY_TOKEN_FILE: /var/run/secrets/eks.amazonaws.com/serviceaccount/token
Deux ensembles de résultats dupliqués sont renvoyés car le Pod contient deux conteneurs. Les deux exemples présentent les mêmes valeurs.
Si votre Pod utilise le point de terminaison AWS régional, la ligne suivante est également renvoyée dans la sortie précédente.
AWS_STS_REGIONAL_ENDPOINTS=regional
Étape 3 : suppression de la politique CNI du rôle IAM de nœud
Si le rôle IAM de votre nœud Amazon EKS est actuellement associé à la politique AmazonEKS_CNI_Policy
IAM (IPv4
) ou à une IPv6 politique, et que vous avez créé un rôle IAM distinct, que vous lui avez attaché la politique et que vous l'avez attribué au compte de service aws-node
Kubernetes, nous vous recommandons de supprimer la politique de votre rôle de nœud à l'aide de la commande AWS CLI correspondant à la famille d'adresses IP de votre cluster. Remplacez AmazonEKSNodeRole
par le nom de votre rôle de nœud.
-
IPv4
aws iam detach-role-policy --role-name AmazonEKSNodeRole --policy-arn arn:aws: iam::aws:policy/AmazonEKS_CNI_Policy
-
IPv6
Remplacez
111122223333
par l'ID de votre compte etAmazonEKS_CNI_IPv6_Policy
par le nom de votre politiqueIPv6
.aws iam detach-role-policy --role-name AmazonEKSNodeRole --policy-arn arn:aws: iam::111122223333:policy/AmazonEKS_CNI_IPv6_Policy
Créer une politique IAM pour les clusters qui utilisent la famille IPv6
Si vous avez créé un cluster qui utilise cette IPv6
famille et que le cluster possède une version 1.10.1
ou une version ultérieure du module complémentaire Amazon VPC CNI pour Kubernetes configurée, vous devez créer une politique IAM que vous pouvez attribuer à un rôle IAM. Si vous avez un cluster existant que vous n'avez pas configuré avec la IPv6
famille lorsque vous l'avez crééIPv6
, vous devez créer un nouveau cluster pour pouvoir l'utiliser. Pour plus d'informations sur l'utilisation de IPv6
avec votre cluster, veuillez consulter En savoir plus sur IPv6 les adresses des clusters, des pods et des services.
-
Copiez la politique suivante et enregistrez-la dans un fichier appelé
vpc-cni-ipv6-policy.json
.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:AssignIpv6Addresses", "ec2:DescribeInstances", "ec2:DescribeTags", "ec2:DescribeNetworkInterfaces", "ec2:DescribeInstanceTypes" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": [ "arn:aws: ec2:*:*:network-interface/*" ] } ] }
-
Créez la politique IAM.
aws iam create-policy --policy-name AmazonEKS_CNI_IPv6_Policy --policy-document file://vpc-cni-ipv6-policy.json