Estou enfrentando problemas quando tento conceder acesso aos meus clusters do Amazon Elastic Kubernetes Service (Amazon EKS).
Resolução
Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solução de erros da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.
Use as entradas de acesso do Amazon EKS para conceder acesso à API do Kubernetes para usuários e funções do AWS Identity and Access Management (AWS IAM).
Configurar as permissões principais do IAM
O principal do IAM deve ter as seguintes permissões para seu cluster:
- CreateAccessEntry
- ListAccessEntries
- DescribeAccessEntry
- DeleteAccessEntry
- UpdateAccessEntry
- ListAccessPolicies
- AssociateAccessPolicy
- DisassociateAccessPolicy
Para obter mais informações sobre as permissões do Amazon EKS, consulte Ações definidas pelo Amazon Elastic Kubernetes Service.
Configurar permissões de política de acesso
A política de acesso define o nível de acesso que permite que um usuário acesse a API Kubernetes. Use as seguintes políticas para criar entradas de acesso:
Ao criar entradas de acesso com as políticas anteriores, você concede acesso a um namespace para permissões em nível de cluster do Kubernetes.
Observação: não é possível modificar o conteúdo de uma política de acesso e criar suas próprias políticas de acesso.
Conceda ao usuário do IAM acesso ao seu cluster Amazon EKS
Alterar o modo de autenticação
Importante: depois de ativar o método de entrada de acesso, não será possível desativá-lo novamente.
Para usar entradas de acesso, atualize o modo de autenticação do cluster Amazon EKS para API ou API_AND_CONFIG_MAP. Execute o seguinte comando update-cluster-config da AWS CLI:
aws eks update-cluster-config \
--name my-cluster \
--access-config authenticationMode=API_AND_CONFIG_MAP
Observação: substitua my-cluster pelo nome do seu cluster. Para desativar permanentemente o método ConfigMap, substitua API_AND_CONFIG_MAP pela API.
Crie uma entrada de acesso para a entidade IAM e anexe a política de acesso
Forneça ao administrador do cluster acesso ao seu cluster Amazon EKS. Primeiro, execute o seguinte comando create-access-entry para criar uma entrada de acesso para seu usuário do IAM ou perfil:
aws eks create-access-entry --cluster-name my-cluster \
--principal-arn arn:aws:iam::111122223333:user/example-user
Observação: substitua my-cluster pelo nome do cluster e arn:aws:iam::111122223333:user/example-user pelo seu perfil do IAM ou ARN do usuário.
Em seguida, execute o seguinte comando associate-access-policy para associar a AmazonEKSClusterAdminPolicy ao usuário do IAM ou perfil:
aws eks associate-access-policy --cluster-name my-cluster\
--principal-arn arn:aws:iam::111122223333:user/example-user \
--policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy \
--access-scope type=cluster
Observação: substitua my-cluster pelo nome do cluster e arn:aws:iam::111122223333:user/example-user pelo seu perfil do IAM ou ARN do usuário.
Para fornecer ao usuário do IAM ou perfil, acesso de administrador a um namespace específico, execute o seguinte comando associate-access-policy:
aws eks associate-access-policy --cluster-name my-cluster\
--principal-arn arn:aws:iam::111122223333:role/example-role \
--policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSAdminPolicy \
--access-scope type=namespace,namespaces=test*
Observação: substitua my-cluster pelo nome do cluster e arn:aws:iam::111122223333:role/example-role pelo seu perfil do IAM ou ARN do usuário. Além disso, substitua test pelo nome do seu namespace.
Para usar entradas de acesso com o Kubernetes Role-Based Access Control (RBAC), execute o seguinte comando create-access-entry:
aws eks create-access-entry --cluster-name my-cluster \
--principal-arn arn:aws:iam::111122223333:role/example-role-2 \
--kubernetes-groups viewers
Observação: substitua my-cluster pelo nome do cluster e arn:aws:iam::111122223333:user/example-role-2 pelo seu perfil do IAM ou ARN do usuário. Substitua viewers pelo nome do grupo especificado no objeto Kubernetes RoleBinding ou ClusterRoleBinding em seu cluster.
Confirme suas credenciais de entidade IAM
Para verificar as credenciais de usuário ou perfil do IAM que estão sendo usadas na AWS CLI, execute o seguinte comando get-caller-identity:
aws sts get-caller-identity
A saída do comando deve retornar o usuário ou a perfil do IAM para o qual você criou uma entrada de acesso. Se você receber uma função ou perfil do IAM diferente, certifique-se de ter configurado corretamente a função ou as credenciais do usuário.
Crie o Kubeconfig para sua entidade IAM
Para criar o Kubeconfig para sua função ou perfil do IAM, execute o seguinte comando update-kubeconfig:
aws eks update-kubeconfig --name my-cluster --region aws-region
Observação: substitua my-cluster pelo nome do seu cluster e aws-region pela sua região da AWS.
Verifique seu acesso ao Kubernetes
Confirme se sua entidade IAM está autenticada e se é possível acessar seus recursos de cluster do Amazon EKS.
Para verificar se é possível criar pods em qualquer namespace, execute o seguinte comando:
kubectl auth can-i create pods --all-namespaces
Para verificar se é possível listar implantações em um namespace específico, execute o seguinte comando:
kubectl auth can-i list deployments.apps -n test
Observação: substitua test pelo nome do seu namespace.