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íliaIPv6
). 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.
-
Abra o console do IAM, em https://console.aws.amazon.com/iam/
. -
No painel de navegação à esquerda, escolha Roles.
-
Procure
eksNodeRole
,AmazonEKSNodeRole
ouNodeInstanceRole
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 contenhaeksNodeRole
,AmazonEKSNodeRole
ouNodeInstanceRole
, selecione-a para visualizar as políticas anexadas. -
Escolha Permissões.
-
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. -
Escolha Trust relationships (Relacionamentos de confiança) e, em seguida, escolha Edit trust policy (Editar política de confiança).
-
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
-
-
Abra o console do IAM, em https://console.aws.amazon.com/iam/
. -
No painel de navegação à esquerda, escolha Roles.
-
Na página Roles (Funções), selecione Create role (Criar função).
-
Na página Select trusted entity (Selecionar entidade confiável), faça o seguinte:
-
Na seção Tipo de entidade confiável), escolha Service da AWS.
-
Em Use case (Caso de uso), selecione EC2.
-
Escolha Próximo.
-
-
Na página Add permissions (Adicionar permissões), faça o seguinte:
-
Na caixa Filter policies (Políticas de filtro) insira
AmazonEKSWorkerNodePolicy
. -
Marque a caixa de seleção à esquerda de AmazonEKSWorkerNodePolicy nos resultados da pesquisa.
-
Escolha Clear filters (Limpar filtros).
-
Na caixa Filter policies (Políticas de filtro) insira
AmazonEC2ContainerRegistryPullOnly
. -
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. -
Escolha Próximo.
-
-
Na página Name, review, and create (Nomear, revisar e criar), faça o seguinte:
-
Em Role name (Nome da função), insira um nome exclusivo para a função, como
AmazonEKSNodeRole
. -
Em Description (Descrição), substitua o texto atual por um texto descritivo como
Amazon EKS - Node role
. -
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.
-
Selecione Criar perfil.
-
-
- AWS CLI
-
-
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
-
Crie o perfil do IAM.
aws iam create-role \ --role-name AmazonEKSNodeRole \ --assume-role-policy-document file://"node-role-trust-relationship.json"
-
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
-
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
-
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/*" ] } ] }
-
Crie a política do IAM.
aws iam create-policy --policy-name AmazonEKS_CNI_IPv6_Policy --policy-document file://vpc-cni-ipv6-policy.json
-
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
-
-
-