Como corrijo um erro de servidor não autorizado ao me conectar ao servidor da API do Amazon EKS?

Última atualização: 17/12/2020

Recebo a mensagem “error: You must be logged in to the server (Unauthorized)” quando uso comandos kubectl para me conectar ao servidor da API do Amazon Elastic Kubernetes Service (Amazon EKS).

Descrição breve

Antes de se conectar ao servidor da API do Amazon EKS, instale e configure a versão mais recente da AWS Command Line Interface (AWS CLI).

Observação: se você receber erros ao executar comandos na AWS Command Line Interface (AWS CLI), verifique se está usando a versão mais recente da interface.

Depois, o administrador do cluster precisa seguir as etapas de uma das seções abaixo:

  • Você é o criador do cluster
  • Você não é o criador do cluster

Por fim, a pessoa que recebeu o erro precisa seguir as etapas da seção Você é o usuário ou a função que recebeu o erro.

Resolução

Você é o criador do cluster

Caso você tenha criado o cluster, siga estas etapas:

1.    Para ver a configuração do usuário ou da função da AWS CLI, execute o seguinte comando:

$ aws sts get-caller-identity

A saída exibirá o nome do recurso da Amazon (ARN) do usuário ou da função do AWS Identity and Access Management (IAM). Por exemplo:

{
    "UserId": "XXXXXXXXXXXXXXXXXXXXX",
    "Account": "XXXXXXXXXXXX",
    "Arn": "arn:aws:iam::XXXXXXXXXXXX:user/testuser"
}

2.    Confirme se o ARN é igual ao do criador do cluster.

3.    Atualize ou gere o arquivo kubeconfig usando um dos comandos a seguir.

Como usuário do IAM, execute o seguinte comando:

$ aws eks update-kubeconfig --name eks-cluster-name --region aws-region

Observação: substitua eks-cluster-name pelo nome do cluster. Substitua aws-region por sua região da AWS.

Como a função do IAM, execute o seguinte comando:

$ aws eks update-kubeconfig --name eks-cluster-name --region aws-region --role-arn arn:aws:iam::XXXXXXXXXXXX:role/testrole

Observação: substitua eks-cluster-name pelo nome do cluster. Substitua aws-region por sua região da AWS.

4.    Para confirmar se o arquivo kubeconfig está atualizado, execute o seguinte comando:

$ kubectl config view --minify

5.    Para confirmar se o usuário ou a função do IAM está autenticado, execute o seguinte comando:

$ kubectl get svc

A saída será semelhante à seguinte:

NAME            TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE
kubernetes      ClusterIP   10.100.0.1     <none>        443/TCP   77d

Você não é o criador do cluster

Caso você não tenha criado o cluster, siga estas etapas:

1.    Para ver a configuração do usuário ou da função da AWS CLI, execute o seguinte comando:

$ aws sts get-caller-identity

A saída exibirá o ARN do usuário ou da função do IAM.

2.    Peça ao proprietário ou administrador do cluster que adicione seu usuário ou sua função do IAM ao ConfigMap aws-auth.

3.    Para editar o ConfigMap aws-auth em um editor de texto, o proprietário ou administrador do cluster precisa executar o seguinte comando:

$ kubectl edit configmap aws-auth -n kube-system

4.    Para adicionar um usuário ou uma função do IAM, siga uma das etapas abaixo.

Adicione o usuário a mapUsers. Por exemplo:

mapUsers: |
  - userarn: arn:aws:iam::XXXXXXXXXXXX:user/testuser
    username: testuser
    groups:
      - system:masters

Adicione a função do IAM a mapRoles. Por exemplo:

mapRoles: |
  - rolearn: arn:aws:iam::XXXXXXXXXXXX:role/testrole
    username: testrole
    groups:
      - system:masters

Observação: o grupo system:masters permite o acesso de superusuário para realizar qualquer ação em qualquer recurso. Para obter mais informações, consulte Default roles and role bindings (Funções e vinculações de funções padrão) no site do Kubernetes.

Você é o usuário ou a função que recebeu o erro

Se você recebeu o erro, siga estas etapas:

1.    Para atualizar ou gerar o arquivo kubeconfig depois de atualizar o ConfigMap aws-auth, execute um dos comandos a seguir.

Como usuário do IAM, execute o seguinte comando:

$ aws eks update-kubeconfig --name eks-cluster-name --region aws-region

Observação: substitua eks-cluster-name pelo nome do cluster. Substitua aws-region por sua região da AWS.

2.    Como a função do IAM, execute o seguinte comando:

$ aws eks update-kubeconfig --name eks-cluster-name --region aws-region --role-arn arn:aws:iam::XXXXXXXXXXXX:role/testrole

Observação: substitua eks-cluster-name pelo nome do cluster. Substitua aws-region por sua região da AWS.

3.    Para confirmar se o arquivo kubeconfig está atualizado, execute o seguinte comando:

$ kubectl config view --minify

4.    Para confirmar se o usuário ou a função do IAM está autenticado, execute o seguinte comando:

$ kubectl get svc

A saída será semelhante à seguinte:

NAME            TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE
kubernetes      ClusterIP   10.100.0.1     <none>        443/TCP   77d

Observação: caso você continue recebendo erros, leia as diretrizes de solução de problemas em Using RBAC Authorization (Usar a autorização RBAC) no site do Kubernetes.


Este artigo foi útil?


Precisa de ajuda com faturamento ou suporte técnico?