
Estou tentando aprender AWS EKS e seguindoConceitos básicos do Amazon EKS – AWS Management Console e AWS CLIguia passo a passo, exceto para a região que mudei para us-east-1.
Consigo criar meu cluster - my-cluster
mas quando tento configurar meu computador, que é uma instância EC2 (T2.Micro) para se comunicar com o cluster, recebo error: You must be logged in to the server (Unauthorized)
um erro. Em um mergulho profundo, descobri que a função EC2 (ARN - arn:aws:iam::123456789012:role/ec2-admin) precisa assumir a função que criou o cluster (ARN - arn:aws:iam::123456789012:role /myAmazonEKSClusterRole). Também fiz essas modificações na definição da função, modificando o relacionamento de confiança para myAmazonEKSClusterRole
obter. arn:aws:sts::123456789012:assumed-role/myAmazonEKSClusterRole/test-session
Depois disso, sou capaz de executar aws eks
comandos, mas kubectl
os comandos ainda estão me escapando.
Para executar kubectl
comandos, estou tentando seguir as etapas emGerenciando usuários ou funções do IAM para seu cluster. No entanto, eles estão me pedindo para fazer alterações no aws-auth-cm.yaml
arquivo configMap, o que não posso fazer porque não consigo executar kubectl apply
o comando.
Meu kubeconfig
arquivo -
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: <cert>
name: arn:aws:eks:us-east-1:123456789012:cluster/my-cluster
contexts:
- context:
cluster: arn:aws:eks:us-east-1:123456789012:cluster/my-cluster
user: arn:aws:eks:us-east-1:123456789012:cluster/my-cluster
name: arn:aws:eks:us-east-1:123456789012:cluster/my-cluster
current-context: arn:aws:eks:us-east-1:123456789012:cluster/my-cluster
kind: Config
preferences: {}
users:
- name: arn:aws:eks:us-east-1:123456789012:cluster/my-cluster
user:
exec:
apiVersion: client.authentication.k8s.io/v1alpha1
args:
- --region
- us-east-1
- eks
- get-token
- --cluster-name
- my-cluster
command: aws
O conteúdo do arquivo aws-auth-cm.yaml depois que fiz as alterações é
apiVersion: v1
kind: ConfigMap
metadata:
name: aws-auth
namespace: kube-system
data:
mapRoles: |
# - rolearn: <ARN of instance role (not instance profile)>
# username: system:node:{{EC2PrivateDNSName}}
# groups:
# - system:bootstrappers
# - system:nodes
- rolearn: arn:aws:iam::375712918983:role/myAmazonEKSClusterRole
username: myAmazonEKSClusterRole
groups:
- system:masters
Você pode ajudar com isso ou dar algumas dicas?
Por favor, deixe-me saber se você tem alguma dúvida.
Responder1
Você vai querer uma das três coisas; qualquer:
- assuma o
arn:aws:iam::123456789012:role/myAmazonEKSClusterRole
em uma sessão de terminal de forma que oaws eks get-token
run bykubectl
se comporte corretamente - crie um perfil awscli que assuma a
arn:aws:iam::123456789012:role/myAmazonEKSClusterRole
função e atualizeargs:
para incluir[..., "--profile", "whatever-you-call-that-profile",...]
- ou assuma a função em um terminal, execute
aws eks get-token
e coloque essa credencial estática em seu kubeconfig, pois parece que você não precisa da credencial por muito tempo apenas para atualizar o ConfigMap
Para o primeiro, quero dizer aws sts assume-role --role-arn arn:aws:iam::123456789012:role/myAmazonEKSClusterRole ... | tee sts-creds.json
e então export AWS_ACCESS_KEY_ID= AWS_SECRET_KEY= AWS_SESSION_TOKEN=
com base no conteúdo desse json
Para o segundo, quero dizer:
$ cat >> $HOME/.aws/config <<FOO
[profile my-cluster]
assume_role = arn:aws:iam::123456789012:role/myAmazonEKSClusterRole
source_profile = whatever
; or credential_source = whatever
FOO
de acordo comesta documentação