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

Data da última atualização: 2021-11-08

Recebo uma mensagem dizendo que preciso estar conectado ao servidor (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)

Breve descrição

Antes de se conectar ao servidor de 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 da AWS Command Line Interface (AWS CLI), certifique-se de estar usando a versão mais recente da AWS CLI.

Em seguida, o administrador do cluster deverá concluir as etapas em uma das seguintes seções:

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

Por fim, a pessoa que recebeu o erro deve concluir as etapas na seção Você é o usuário ou a função que recebeu o erro.

Resolução

Você é o criador do cluster

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 seguintes comandos.

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

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.

Observação: se você tiver as permissões corretas do IAM, também poderá usar AssumeRole para fazer login como criador do cluster.

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 do IAM A mapUsers. Por exemplo:

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

Observação: substitua testuser seu nome de usuário.

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

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

Observação: substitua testrole por sua função.

O valor de username na seção mapRoles aceita somente minúsculas. A função do IAM deve ser mapeada sem o caminho, pois rolearn não oferece suporte para caminho.

O grupo system:masters permite o acesso de superusuário para realizar qualquer ação em qualquer recurso. Para obter mais informações, consulte Funções e associações de função padrão no site do Kubernetes.

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

1.    Para atualizar ou gerar o arquivo kubeconfig após a atualização do ConfigMap aws-auth, execute um dos seguintes comandos.

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: se você continuar recebendo erros, consulte as diretrizes de solução de problemas em Usar a autorização RBAC no site do Kubernetes.


Este artigo ajudou?


Precisa de ajuda com faturamento ou suporte técnico?