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

3 minuto de leitura
0

Recebo um erro AccessDeniedException ao tentar 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 de API eks:DescribeCluster com o cluster para gerar um arquivo kubeconfig para um cluster do Amazon EKS. Para obter essa 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, execute as seguintes etapas:

  1. Abra o console do IAM. Em seguida, no painel de navegação, escolha Usuários ou perfis.

  2. Selecione o nome do usuário ou perfil para incorporar uma política.

  3. Na guia Permissões, escolha Adicionar política em linha.

  4. Escolha a guia JSON.

  5. 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": "*"
        }
      ]
    }
  6. Escolha Revisar política.

  7. Em Nome, insira um nome para a política. Por exemplo: eks_update-kubeconfig.

  8. Selecione Criar política.
    Observação: Se você tiver aplicado a autenticação multifator (MFA) para usuários do IAM que usam a AWS Command Line Interface (AWS CLI), antes de concluir a próxima etapa, você deverá autenticar com MFA. Uma mensagem de negação explícita indica que se, a MFA for falsa, há uma política do IAM que nega 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"
            }
          }
        }
      ]
    }

    Como você usa um dispositivo MFA, deve usar um token MFA para autenticar o acesso aos recursos da AWS com a AWS CLI. Siga as etapas do artigo Como posso usar um token MFA para autenticar o acesso aos meus recursos do AWS por meio da AWS CLI? Em seguida, execute o comando sts get-session-token da AWS CLI. Substitua arn-of-the-mfa-device pelo ARN do seu dispositivo MFA e code-from-token pelo código do seu token:

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

    É possível usar credenciais temporárias exportando os 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
  9. Execute o comando update-kubeconfig e confirme se ele atualiza o arquivo de configuração em ~/.kube/config. substitua region-code pelo código da sua região da AWS e cluster_nome pelo nome do seu cluster:

    aws eks --region region-code update-kubeconfig --name cluster_name
AWS OFICIAL
AWS OFICIALAtualizada há um ano