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?