Perfil do IAM em nós do Amazon EKS - Amazon EKS

Perfil do IAM em nós do Amazon EKS

O daemon kubelet do nó do Amazon EKS chama as APIs da AWS em seu nome. Os nós recebem permissões para essas chamadas de API por meio de um perfil de instância do IAM e políticas associadas. Antes de iniciar os nós e registrá-los em um cluster, você deve criar um perfil do IAM para uso desses nós quando eles forem iniciados. Esse requisito se aplica a nós executados com a AMI otimizada para Amazon EKS fornecida pela Amazon ou com qualquer outra AMI do nó que você pretende usar. Além disso, este requisito se aplica tanto aos grupos de nós gerenciados quanto aos nós autogerenciados.

nota

Não é possível usar a mesma função usada para criar clusters.

Antes de criar os nós, é necessário criar um perfil do IAM com as seguintes permissões:

  • Permissões para que o kubelet descreva os recursos do Amazon EC2 na VPC, como as fornecidas pela política AmazonEKSWorkerNodePolicy. Esta política também fornece as permissões para o Amazon EKS Pod Identity Agent.

  • Permissões para que o kubelet use imagens de contêiner do Amazon Elastic Container Registry (Amazon ECR), como as fornecidas pela política AmazonEC2ContainerRegistryPullOnly. As permissões para usar imagens de contêiner do Amazon Elastic Container Registry (Amazon ECR) são necessárias porque os complementos integrados para a rede executam pods que usam imagens de contêiner do Amazon ECR.

  • (Opcional) Permissões para que o Amazon EKS Pod Identity Agent use a ação eks-auth:AssumeRoleForPodIdentity para recuperar credenciais para pods. Se você não usar a AmazonEKSWorkerNodePolicy, deverá fornecer essa permissão além das permissões do EC2 para usar a Identidade de Pods do EKS, a política gerenciada * (Optional) If you don’t use IRSA or EKS Pod Identity to give permissions to the VPC CNI pods, then you must provide permissions for the VPC CNI on the instance role. You can use either the ` AmazonEKS_CNI_Policy (se você criou seu cluster com a família IPv4) ou uma política IPv6 criada por você (se você criou seu cluster com a família IPv6). Contudo, em vez de anexar a política à essa função, recomendamos que você anexe a política a uma função separada usada especificamente para o complemento CNI da Amazon VPC. Para obter mais informações sobre a criação de uma função separada para o complemento CNI da Amazon VPC, consulte Configurar o plug-in CNI da Amazon VPC para usar IRSA.

nota

Os grupos de nós do Amazon EC2 devem ter uma função do IAM diferente do perfil do Fargate. Para ter mais informações, consulte Perfil do IAM para execução de Pod do Amazon EKS.

Verificar se há uma função existente do nó

Use o procedimento a seguir para verificar se a conta já tem a função de nó do Amazon EKS.

  1. Abra o console do IAM, em https://console.aws.amazon.com/iam/.

  2. No painel de navegação à esquerda, escolha Roles.

  3. Procure eksNodeRole, AmazonEKSNodeRole ou NodeInstanceRole na lista de funções. Se não houver uma função com um desses nomes, consulte Criação de uma função para a função do IAM de nó do Amazon EKS para criar a função. Se houver uma função que contenha eksNodeRole, AmazonEKSNodeRole ou NodeInstanceRole, selecione-a para visualizar as políticas anexadas.

  4. Escolha Permissões.

  5. Certifique-se de que as políticas gerenciadas AmazonEKSWorkerNodePolicy e AmazonEC2ContainerRegistryPullOnly estejam anexadas à perfil ou que uma política personalizada esteja anexada com as permissões mínimas.

    nota

    Se a AmazonEKS_CNI_Policy estiver anexada à função, recomendamos removê-la e anexá-la a um perfil do IAM mapeado para a conta do serviço do Kubernetes do aws-node. Para ter mais informações, consulte Configurar o plug-in CNI da Amazon VPC para usar IRSA.

  6. Escolha Trust relationships (Relacionamentos de confiança) e, em seguida, escolha Edit trust policy (Editar política de confiança).

  7. Verifique se o relacionamento de confiança contém a seguinte política: Se o relacionamento de confiança corresponder à seguinte política, escolha Cancel (Cancelar). Se o relacionamento de confiança não corresponder, copie a política para a janela Edit trust policy (Editar política de confiança) e escolha Update policy (Atualizar política).

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

Criação de uma função para a função do IAM de nó do Amazon EKS

Você pode criar o perfil IAM do nó com o AWS Management Console ou com a CLI AWS.

AWS Management Console
  1. Abra o console do IAM, em https://console.aws.amazon.com/iam/.

  2. No painel de navegação à esquerda, escolha Roles.

  3. Na página Roles (Funções), selecione Create role (Criar função).

  4. Na página Select trusted entity (Selecionar entidade confiável), faça o seguinte:

    1. Na seção Tipo de entidade confiável), escolha Service da AWS.

    2. Em Use case (Caso de uso), selecione EC2.

    3. Escolha Próximo.

  5. Na página Add permissions (Adicionar permissões), faça o seguinte:

    1. Na caixa Filter policies (Políticas de filtro) insira AmazonEKSWorkerNodePolicy.

    2. Marque a caixa de seleção à esquerda de AmazonEKSWorkerNodePolicy nos resultados da pesquisa.

    3. Escolha Clear filters (Limpar filtros).

    4. Na caixa Filter policies (Políticas de filtro) insira AmazonEC2ContainerRegistryPullOnly.

    5. Marque a caixa de seleção à esquerda de AmazonEC2ContainerRegistryPullOnly nos resultados da pesquisa.

      A política gerenciada AmazonEKS_CNI_Policy ou uma política de IPv6 que você criar também deverá ser anexada a esse perfil ou a um perfil diferente que seja mapeado para a conta de serviço aws-node do Kubernetes. Recomendamos atribuir a política à função associada à conta de serviço do Kubernetes em vez de atribuí-la a essa função. Para ter mais informações, consulte Configurar o plug-in CNI da Amazon VPC para usar IRSA.

    6. Escolha Próximo.

  6. Na página Name, review, and create (Nomear, revisar e criar), faça o seguinte:

    1. Em Role name (Nome da função), insira um nome exclusivo para a função, como AmazonEKSNodeRole.

    2. Em Description (Descrição), substitua o texto atual por um texto descritivo como Amazon EKS - Node role.

    3. Em Adicionar tags (Opcional), adicione metadados ao perfil anexando tags como pares chave-valor. Para obter mais informações sobre o uso de tags no IAM, consulte Marcar recursos do IAM no Guia do usuário do IAM.

    4. Selecione Criar perfil.

AWS CLI
  1. Execute o seguinte comando para criar o arquivo node-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. Crie o perfil do IAM.

    aws iam create-role \ --role-name AmazonEKSNodeRole \ --assume-role-policy-document file://"node-role-trust-relationship.json"
  3. Anexe duas políticas do IAM gerenciadas necessárias à função do 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/AmazonEC2ContainerRegistryPullOnly \ --role-name AmazonEKSNodeRole
  4. Anexe uma das seguintes políticas do IAM à função do IAM, dependendo de com qual família de IP você criou o seu cluster. A política deve ser anexada a esse perfil ou a um perfil associado à conta de serviço aws-node do Kubernetes que é usada para o Amazon VPC CNI plugin for Kubernetes. Recomendamos atribuir a política à função associada à conta de serviço do Kubernetes. Para atribuir a política à função associada à conta de serviço do Kubernetes, consulte Configurar o plug-in CNI da Amazon VPC para usar IRSA.

    • IPv4

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

      1. Copie o texto a seguir e salve-o em um arquivo chamado 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. Crie a política do IAM.

        aws iam create-policy --policy-name AmazonEKS_CNI_IPv6_Policy --policy-document file://vpc-cni-ipv6-policy.json
      3. Anexe a política do IAM à função do IAM. Substitua 111122223333 pelo ID da sua conta.

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