Por que não consigo gerar um arquivo kubeconfig para meu cluster do Amazon EKS?

Data da última atualização: 22/11/2021

Recebo um erro AccessDeniedException quando tento gerar um arquivo kubeconfig para um cluster do Amazon Elastic Kubernetes Service (Amazon EKS).

Breve descrição

Você deve ter permissão para usar a ação da API eks:DescribeCluster com o cluster para gerar um arquivo kubeconfig para um cluster do Amazon EKS. Para obter permissão, anexe uma política do AWS Identity and Access Management (IAM) a um usuário do IAM.

Resolução

Para anexar uma política do IAM a um usuário do IAM, conclua as seguintes etapas:

1.    Abra o console do IAM.

2.    No painel de navegação, escolha Users or Roles (Usuários ou funções).

3.    Selecione o nome do usuário ou função em que uma política será incorporada.

4.    Na guia Permissions (Permissões), escolha a opção Add inline policy (Adicionar política em linha).

5.    Clique na guia JSON.

6.    Use um editor de texto para substituir o código pela seguinte política do IAM:

{
   "Version": "2012-10-17",
   "Statement": [
       { 
            "Effect": "Allow",
            "Action": [
                "eks:DescribeCluster"
            ],
            "Resource": "*"
       }
    ]
}

7.    Escolha Review Policy (Revisar política).

8.    Para Name (Nome), insira um nome para a sua política. Por exemplo: eks_update-kubeconfig.

Observação: você pode escolher qualquer nome para a política.

9.    Escolha Create policy (Criar política).

Uma mensagem de negação explícita indica que, se a autenticação multifator (MFA) for falsa, haverá uma política do IAM que está negando a maioria das ações:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "BlockMostAccessUnlessSignedInWithMFA",
      "Effect": "Deny",
      "NotAction": [
        "iam:CreateVirtualMFADevice",
        "iam:EnableMFADevice",
        "iam:ListMFADevices",
        "iam:ListUsers",
        "iam:ListVirtualMFADevices",
        "iam:ResyncMFADevice",
        "sts:GetSessionToken"
      ],
      "Resource": "*",
      "Condition": {
        "BoolIfExists": {
          "aws:MultiFactorAuthPresent": "false"
        }
      }
    }
  ]
}

Observação: como você usa um dispositivo com MFA, você deve usar um token de MFA para autenticar o acesso aos recursos da AWS com a AWS Command Line Interface (AWS CLI). Siga as etapas descritas no artigo Como utilizar um token de MFA para autenticar o acesso aos meus recursos da AWS por meio da AWS CLI? Em seguida, execute o comando sts get-session-token da AWS CLI.

Por exemplo:

$ aws sts get-session-token --serial-number arn-of-the-mfa-device --token-code code-from-token

Observação: substitua arn-of-the-mfa-device pelo ARN do seu dispositivo com MFA e code-from-token pelo código do seu token.

Você pode usar credenciais temporárias exportando seus valores para variáveis de ambiente.

Por exemplo:

$ export AWS_ACCESS_KEY_ID=example-access-key-as-in-previous-output

$ export AWS_SECRET_ACCESS_KEY=example-secret-access-key-as-in-previous-output

$ export AWS_SESSION_TOKEN=example-session-token-as-in-previous-output

Execute o comando update-kubeconfig e confirme se ele atualiza o arquivo de configuração em ~/.kube/config:

aws eks --region region-code update-kubeconfig --name cluster_name

Observação: substitua region-code pelo código da região da AWS e cluster name pelo nome do cluster.


Este artigo ajudou?


Precisa de ajuda com faturamento ou suporte técnico?