Rôle IAM de nœud Amazon EKS - 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 tout le monde.

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.

Rôle IAM de nœud Amazon EKS

Le kubelet démon du nœud Amazon EKS passe des appels aux AWS API en votre nom. Les nœuds reçoivent l'autorisation pour ces appels d'API via un profil d'instance IAM et les politiques associées. Avant de pouvoir lancer les nœuds et les enregistrer dans un cluster, vous devez créer un rôle IAM qui sera utilisé par ces nœuds lors de leur lancement. Cette exigence s'applique aux nœuds lancés avec l'AMI optimisée pour Amazon EKS fournie par Amazon, ou avec toute autre AMI de nœud que vous prévoyez d'utiliser. En outre, cette exigence s'applique à la fois aux groupes de nœuds gérés et aux nœuds autogérés.

Note

Vous ne pouvez pas utiliser le même rôle que celui utilisé pour créer des clusters.

Avant de créer des nœuds, vous devez créer un rôle IAM avec les autorisations suivantes :

  • Autorisations permettant au kubelet de décrire les ressources Amazon EC2 dans le VPC, telles que fournies par la politique AmazonEKSWorkerNodePolicy. Cette politique fournit également les autorisations pour l'agent d'identité du pod Amazon EKS.

  • Autorisations permettant au kubelet d'utiliser des images du conteneur provenant d'Amazon Elastic Container Registry (Amazon ECR), telles que prévues par la politique AmazonEC2ContainerRegistryReadOnly. Les autorisations d'utiliser des images de conteneurs provenant d'Amazon Elastic Container Registry (Amazon ECR) sont nécessaires parce que les modules complémentaires intégrés pour la mise en réseau exécutent des pods qui utilisent des images de conteneurs provenant d'Amazon ECR.

  • (Facultatif) Autorisations permettant à l'agent d'identité du pod Amazon EKS d'utiliser l'action eks-auth:AssumeRoleForPodIdentity pour récupérer les informations d'identification pour les pods. Si vous n'utilisez pas WorkerNodePolicyAmazoneKS, vous devez fournir cette autorisation en plus des autorisations EC2 pour utiliser EKS Pod Identity.

  • (Facultatif) Si vous n'utilisez pas IRSA ou l'identité du pod EKS pour accorder des autorisations aux pods CNI VPC, vous devez fournir des autorisations pour le CNI VPC sur le rôle d'instance. Vous pouvez utiliser soit la politique gérée par AmazonEKS_CNI_Policy (si vous avez créé votre cluster avec la famille IPv4), soit une politique IPv6 que vous créez (si vous avez créé votre cluster avec la famille IPv6). Cependant, plutôt que d'attacher la politique à ce rôle, nous vous recommandons de l'attacher à un rôle distinct utilisé spécifiquement pour le module complémentaire Amazon VPC CNI. Pour plus d'informations sur la création d'un rôle distinct pour le module complémentaire Amazon VPC CNI, veuillez consulter Configuration de l'utilisation Amazon VPC CNI plugin for Kubernetes des rôles IAM pour les comptes de service (IRSA).

Note

Avant le 3 octobre 2023, AmazonEKSWorkerNodePolicy et AmazonEC2ContainerRegistryReadOnly étaient requises sur le rôle IAM pour chaque groupe de nœuds gérés.

Les groupes de nœuds Amazon EC2 doivent avoir un rôle IAM différent de celui du profil Fargate. Pour plus d’informations, consultez Rôle IAM d'exécution de Pod Amazon EKS.

Recherche d'un rôle de nœud existant

Vous pouvez utiliser la procédure suivante pour vérifier si votre compte possède déjà le rôle de nœud Amazon EKS.

Pour vérifier eksNodeRole dans la console IAM
  1. Ouvrez la console IAM à l’adresse https://console.aws.amazon.com/iam/.

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

  3. Recherchez eksNodeRole, AmazonEKSNodeRole ou NodeInstanceRole dans la liste des rôles. Si aucun rôle portant l'un de ces noms n'existe, consultez la section Création du rôle IAM de nœud Amazon EKS pour créer le rôle. Si un rôle qui contient eksNodeRole, AmazonEKSNodeRole ou NodeInstanceRole existe, sélectionnez-le pour afficher les politiques attachées.

  4. Choisissez Autorisations.

  5. Assurez-vous que les politiques gérées par WorkerNodePolicy Amazoneks et ContainerRegistryReadOnly AmazonEC2 sont associées au rôle ou qu'une politique personnalisée est attachée avec les autorisations minimales.

    Note

    Si la politique AmazonEKS_CNI_Policy est attachée au rôle, nous vous recommandons de la supprimer et de l'attacher à un rôle IAM qui est plutôt mappé au compte de service aws-node Kubernetes. Pour plus d’informations, consultez Configuration de l'utilisation Amazon VPC CNI plugin for Kubernetes des rôles IAM pour les comptes de service (IRSA).

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

  7. Vérifiez que la relation d'approbation contient la politique suivante. Si la relation d'approbation correspond à la politique ci-dessous, sélectionnez Annuler. Si la relation d'approbation ne correspond pas, copiez la politique dans la fenêtre Edit trust policy (Modifier la politique d'approbation) et sélectionnez Update policy (Mettre à jour la politique).

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Création du rôle IAM de nœud Amazon EKS

Vous pouvez créer le rôle IAM du nœud avec le AWS Management Console ou le AWS CLI.

AWS Management Console
Pour créer votre rôle de nœud Amazon EKS dans la console IAM
  1. Ouvrez la console IAM à 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électionner une entité de confiance), procédez comme suit :

    1. Sous la section Type d'entité de confiance, sélectionnez Service AWS .

    2. Sous Cas d'utilisation, choisissez EC2.

    3. Choisissez Suivant.

  5. Sur la page Ajouter des autorisations, associez une stratégie personnalisée ou procédez comme suit :

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

    2. Cochez la case située à gauche d'WorkerNodePolicyAmazoneks dans les résultats de recherche.

    3. Sélectionnez Clear filters (Effacer les filtres).

    4. Dans la zone Filter policies (Politiques de filtre), saisissez AmazonEC2ContainerRegistryReadOnly.

    5. Cochez la case située à gauche d'AmazonEC2 ContainerRegistryReadOnly dans les résultats de recherche.

      La politique gérée AmazonEKS_CNI_Policy, ou une politique IPv6 que vous créez doit être également attachée à ce rôle ou à un autre rôle qui est mappé au compte de service aws-node Kubernetes. Nous vous recommandons d'attribuer la politique au rôle associé au compte de service Kubernetes au lieu de l'affecter à ce rôle. Pour plus d’informations, consultez Configuration de l'utilisation Amazon VPC CNI plugin for Kubernetes des rôles IAM pour les comptes de service (IRSA).

    6. 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, AmazonEKSNodeRole.

    2. Pour Description, remplacez le texte actuel par un texte descriptif tel que Amazon EKS - Node role.

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

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

AWS CLI
  1. Exécutez la commande ci-dessous pour créer un fichiernode-role-trust-relationship.json.

    cat >node-role-trust-relationship.json <<EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } EOF
  2. Créez le rôle IAM.

    aws iam create-role \ --role-name AmazonEKSNodeRole \ --assume-role-policy-document file://"node-role-trust-relationship.json"
  3. Attachez deux politiques gérées IAM requises au rôle IAM.

    aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy \ --role-name AmazonEKSNodeRole aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly \ --role-name AmazonEKSNodeRole
  4. Attachez l'une des politiques IAM suivantes au rôle IAM en fonction de la famille IP avec laquelle vous avez créé votre cluster. La politique doit être attachée à ce rôle ou à un rôle associé au compte de service Kubernetes aws-node utilisé pour le Amazon VPC CNI plugin for Kubernetes. Nous vous recommandons d'attribuer la politique au rôle associé au compte de service Kubernetes. Pour attribuer la politique au rôle associé au compte de service Kubernetes, veuillez consulter Configuration de l'utilisation Amazon VPC CNI plugin for Kubernetes des rôles IAM pour les comptes de service (IRSA).

    • IPv4

      aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy \ --role-name AmazonEKSNodeRole
    • IPv6

      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 politique IAM.

        aws iam create-policy --policy-name AmazonEKS_CNI_IPv6_Policy --policy-document file://vpc-cni-ipv6-policy.json
      3. Attachez la politique IAM au rôle IAM. Remplacez 111122223333 par votre ID de compte.

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