Configurer le VPC CNI plugin Amazon à utiliser IRSA - Amazon EKS

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.

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 contribueront à 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.

Configurer le VPC CNI plugin Amazon à utiliser IRSA

Le VPCCNIplugin Amazon pour Kubernetes est le plugin réseau pour Pod mise en réseau dans les EKS clusters Amazon. Le plugin est responsable de l'attribution des adresses VPC IP à Kubernetes nœuds et configuration du réseau nécessaire pour Pods sur chaque nœud. Le plugin :

  • Nécessite les autorisations AWS Identity and Access Management (IAM). Si votre cluster utilise la IPv4 famille, les autorisations sont spécifiées dans la politique AWS gérée « Amazon EKS _ CNI _Policy ». Si votre cluster utilise la IPv6 famille, les autorisations doivent être ajoutées à une IAM politique que vous créez ; pour obtenir des instructions, consultez. Création d'une IAM politique pour les clusters qui utilisent la IPv6 famille Vous pouvez associer la politique au IAM rôle du EKS nœud Amazon ou à un IAM rôle distinct. Pour obtenir des instructions sur la manière d'associer la politique au IAM rôle du EKS nœud Amazon, consultezIAMRôle EKS du nœud Amazon. 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 Kubernetes compte de service nommé aws-node lors de son déploiement. Le compte de service est lié à un Kubernetes clusterrolenomméaws-node, auquel est attribué le nom requis Kubernetes autorisations.

Note

Le Pods pour le Amazon VPC CNI plugin for Kubernetes ont accès aux autorisations attribuées au IAMrôle de EKS nœud Amazon, 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.

Étape 1 : Création du Amazon VPC CNI plugin for Kubernetes IAMrôle

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

  2. Créez le IAM rôle. Vous pouvez utiliser eksctl ou kubectl et le AWS CLI pour créer votre IAM rôle.

    eksctl
    • Créez un IAM rôle et associez la IAM politique au rôle à l'aide de la commande correspondant à la famille d'adresses IP de votre cluster. La commande crée et déploie une AWS CloudFormation pile qui crée un IAM rôle, y attache la politique que vous spécifiez et annote la politique existante aws-node Kubernetes compte ARN de service avec le IAM numéro du rôle créé.

      • IPv4

        Remplacez my-cluster avec 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 avec votre propre valeur. Remplacez 111122223333 avec votre identifiant de compte et remplacez AmazonEKS_CNI_IPv6_Policy avec le nom de votre IPv6 police. Si vous n'avez pas de IPv6 politique, reportez-vous Création d'une IAM politique pour les clusters qui utilisent la IPv6 famille à la section pour en créer une. Pour utiliser IPv6 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, pods, et 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 le AWS CLI
    1. Consultez le OIDC fournisseur de votre clusterURL.

      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 IAM OIDC fournisseur pour votre cluster.

    2. Copiez le contenu suivant dans un fichier nommé vpc-cni-trust-policy.json. Remplacer 111122223333 avec votre identifiant de compte et EXAMPLED539D4633E53DE1B71EXAMPLE avec le résultat renvoyé à l'étape précédente. Remplacez region-code avec 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" } } } ] }
    3. Créez le rôle. Vous pouvez remplacer AmazonEKSVPCCNIRole avec le nom de votre choix.

      aws iam create-role \ --role-name AmazonEKSVPCCNIRole \ --assume-role-policy-document file://"vpc-cni-trust-policy.json"
    4. Associez la IAM politique 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 avec votre identifiant de compte et AmazonEKS_CNI_IPv6_Policy avec le nom de votre IPv6 police. Si vous n'avez pas de IPv6 politique, reportez-vous Création d'une IAM politique pour les clusters qui utilisent la IPv6 famille à la section pour en créer une. Pour utiliser IPv6 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, pods, et services.

        aws iam attach-role-policy \ --policy-arn arn:aws: iam::111122223333:policy/AmazonEKS_CNI_IPv6_Policy \ --role-name AmazonEKSVPCCNIRole
    5. Exécutez la commande suivante pour annoter le compte ARN de aws-node service avec le IAM rôle que vous avez créé précédemment. Remplacez le example values avec vos propres valeurs.

      kubectl annotate serviceaccount \ -n kube-system aws-node \ eks.amazonaws.com/role-arn=arn:aws: iam::111122223333:role/AmazonEKSVPCCNIRole
  3. (Facultatif) Configurez le type de point de terminaison du service de jetons de AWS sécurité utilisé par votre Kubernetes compte de service. 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éploiement Amazon VPC CNI plugin for KubernetesPods

  1. Supprimer et recréer tout ce qui existe Pods qui sont associés au compte de service pour appliquer les variables d'environnement d'identification. L'annotation n'est pas appliquée à Pods qui sont actuellement en cours d'exécution sans l'annotation. La commande suivante supprime les fichiers existants aws-node DaemonSet Pods et les déploie avec l'annotation du compte de service.

    kubectl delete Pods -n kube-system -l k8s-app=aws-node
  2. Confirmez que Pods tout a redémarré.

    kubectl get pods -n kube-system -l k8s-app=aws-node
  3. Décrivez l'un des Pods et vérifiez que les variables AWS_WEB_IDENTITY_TOKEN_FILE d'AWS_ROLE_ARNenvironnement et existent. Remplacez cpjw7 avec 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 Pod contient deux récipients. Les deux exemples présentent les mêmes valeurs.

    Si vos recettes Pod utilise le point de terminaison AWS régional, puis la ligne suivante est également renvoyée dans la sortie précédente.

    AWS_STS_REGIONAL_ENDPOINTS=regional

Étape 3 : supprimer la CNI politique du IAM rôle de nœud

Si la politique AmazonEKS_CNI_Policy IAM (IPv4) ou une IPv6politique est actuellement associée à votre IAMrôle de EKS nœud Amazon, et que vous avez créé un IAM rôle distinct, que vous y avez attaché la politique à la place et que vous l'avez attribuée au aws-node Kubernetes compte de service, nous vous recommandons alors de supprimer la politique de votre rôle de nœud à l'aide de la AWS CLI commande correspondant à la famille d'adresses IP de votre cluster. Remplacez AmazonEKSNodeRole avec 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 avec votre identifiant de compte et AmazonEKS_CNI_IPv6_Policy avec le nom de votre IPv6 police.

    aws iam detach-role-policy --role-name AmazonEKSNodeRole --policy-arn arn:aws: iam::111122223333:policy/AmazonEKS_CNI_IPv6_Policy

Création d'une IAM politique pour les clusters qui utilisent la IPv6 famille

Si vous avez créé un cluster qui utilise la IPv6 famille et que le cluster possède une version 1.10.1 ou une version ultérieure du Amazon VPC CNI plugin for Kubernetes module complémentaire configuré, vous devez alors créer une IAM politique que vous pouvez attribuer à un IAM rôle. 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, pods, et services.

  1. 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/*" ] } ] }
  2. Créez la IAM politique.

    aws iam create-policy --policy-name AmazonEKS_CNI_IPv6_Policy --policy-document file://vpc-cni-ipv6-policy.json