Estou tentando me conectar a um cluster do Amazon Elastic Kubernetes Service (Amazon EKS) do AWS CodeBuild usando a função de serviço CodeBuild. Por que meus comandos kubectl estão retornando erros de “erro: você deve estar logado no servidor (não autorizado)” e como soluciono o problema?
Breve descrição
O AWS Identity and Access Management (IAM) Authenticator não permite um caminho na função Amazon Resource Name (ARN) usada no mapa de configuração. Se a função ARN (rolearn) no seu aws-auth ConfigMap incluir um caminho, o Amazon EKS retornará o seguinte erro:
"erro: Você deve estar logado no servidor (não autorizado)"
A função de serviço do CodeBuild ARN inclui o seguinte caminho: /service-role. Ao especificar o valor rolearn em seu aws-auth ConfigMap, você deve remover o caminho /service-role — ou qualquer outro caminho, se estiver usando outra função. Para obter mais informações, consulte Gerenciando usuários ou funções do IAM para o seu cluster.
Se você receber erros após remover qualquer caminho da função ARN em seu aws-auth ConfigMap, siga as instruções no seguinte artigo: Como resolvo um erro de não autorizado a entrar no servidor ao me conectar ao servidor de API do Amazon EKS?
Resolução
Identifique o ARN da função de serviço do CodeBuild e remova o caminho /service-role
1. Abra o console CodeBuild.
2. No painel de navegação esquerdo, escolha Criar. Em seguida, escolha Criar projetos.
3. Selecione o nome do projeto. Em seguida, escolha Detalhes da criação.
4. Na seção Ambiente, no painel Detalhes da criação, copie o ARN da função de serviço do CodeBuild.
5. Em um editor de texto, cole o ARN da função de serviço CodeBuild e remova o caminho /service-role. Em seguida, copie o ARN editado.
Exemplo de função de serviço do CodeBuild ARN
arn:aws:iam::123456789012:role/service-role/codebuild-project-service-role
Exemplo de função de serviço do CodeBuild ARN com o caminho /service-role removido
arn:aws:iam::123456789012:role/codebuild-project-service-role
Adicione o ARN da função de serviço CodeBuild editado ao seu aws-auth ConfigMap
1. Para editar o ConfigMap aws-auth em um editor de texto, o proprietário ou administrador do cluster precisa executar o seguinte comando kubectl:
Observação: você pode executar o comando do seu computador local ou de uma instância do Amazon Elastic Compute Cloud (Amazon EC2) que tenha acesso ao cluster EKS. O usuário que criou o cluster tem acesso ao cluster por padrão.
$ kubectl edit -n kube-system cm aws-auth
O ConfigMap aws-auth abre no editor vi.
Observação: se você receber um erro do servidor (NotFound): configmaps “aws-auth” não encontrado, use o exemplo ConfigMap aws-auth fornecido no seguinte artigo: Gerenciando usuários ou funções do IAM para o seu cluster.
2. No editor vi, adicione o ARN da função de serviço CodeBuild editada ao ConfigMap aws-auth fazendo o seguinte:
Ative o modo de inserção pressionando i.
Na instrução mapRoles, em system:masters, para o valor rolearn, insira o ARN da função de serviço CodeBuild editada.
Ative o modo de comando pressionando Esc. Em seguida, salve e feche o arquivo inserindo :wq.
Exemplo de instrução mapRoles que inclui um ARN de função de serviço CodeBuild formatado corretamente
undefined
mapRoles: |
- groups:
- system:masters
rolearn: arn:aws:iam::123456789012:role/codebuild-project-service-role
username: codebuild-project-service-role
undefined
Informações relacionadas
Como resolvo um erro de não autorizado a entrar no servidor ao me conectar ao servidor da API do Amazon EKS?