Como conectar um cluster EKS
Para conectar um cluster EKS na sua máquina, basta o aws eks update-kubeconfig. Para conectar no Kubepier Web, que roda fora da sua máquina, o caminho é outro: a conta AWS ou uma ServiceAccount. Esta página mostra os dois e o que liberar no endpoint do cluster.
IPs de saída do Kubepier Web
A lista de IPs aparece aqui e no app, no menu Rede e segurança.
Os mesmos IPs valem para todos os clientes do Kubepier Web. Libere todos os da lista.
1. Traga o EKS para o kubeconfig
O aws eks update-kubeconfig grava o cluster, o usuário e o contexto no ~/.kube/config. O contexto sai com o ARN do cluster; --alias dá um nome mais curto:
aws eks update-kubeconfig --region <regiao> --name <cluster> --alias <nome>
kubectl get nodes 2. O plugin exec: aws eks get-token e aws-iam-authenticator
O kubeconfig do EKS não leva token: ele chama o aws eks get-token (ou, em configurações antigas, o aws-iam-authenticator), um plugin exec que assina um pedido com a sua credencial IAM e gera um token de poucos minutos. Por isso o kubectl precisa do AWS CLI e da credencial na máquina.
Além da credencial, a identidade IAM precisa de acesso ao cluster: uma access entry no EKS ou, em clusters antigos, uma linha no ConfigMap aws-auth.
Conectar o cluster EKS no Kubepier Desktop
O desktop lê o mesmo ~/.kube/config e roda o plugin exec, como o kubectl. Depois do update-kubeconfig, o cluster aparece no catálogo, no cliente cuja palavra-chave bate com o nome.
Conectar o cluster EKS no Kubepier Web: conta AWS
A web conecta do servidor do Kubepier, onde não existem o seu AWS CLI nem a sua credencial. Por isso um contexto com plugin exec é recusado ao colar o kubeconfig, e o caminho é a aba Conta de nuvem, com uma chave de acesso IAM. O Kubepier varre as regiões, cadastra cada EKS encontrado e, a cada uso, gera o mesmo token que o aws eks get-token produz. Sincronizar relê a conta.
Na IAM, a chave precisa de eks:ListClusters e eks:DescribeCluster (ec2:DescribeRegions é opcional; sem ela, o Kubepier varre as regiões mais comuns). Em cada cluster, um administrador cria a access entry com a política de leitura:
aws eks create-access-entry --region <regiao> --cluster-name <cluster> \
--principal-arn arn:aws:iam::<conta>:user/<usuario>
aws eks associate-access-policy --region <regiao> --cluster-name <cluster> \
--principal-arn arn:aws:iam::<conta>:user/<usuario> \
--policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSViewPolicy \
--access-scope type=cluster Se o cluster ainda autentica só pelo ConfigMap aws-auth, as access entries pedem o modo de autenticação API_AND_CONFIG_MAP (aws eks update-cluster-config --access-config authenticationMode=API_AND_CONFIG_MAP).
No cadastro, informe Access key ID e Secret access key; o session token e as regiões são opcionais. Uma credencial temporária, com session token, para de funcionar quando expira.
Ou um kubeconfig só leitura com ServiceAccount
Se você não quer cadastrar a conta AWS, crie no cluster uma ServiceAccount com o papel view e monte um kubeconfig com o token dela. Rode no seu terminal, com o contexto do EKS ativo, e cole o arquivo gerado em Colar kubeconfig. O papel view não lê Secrets, então a lista de Secrets e os releases do Helm ficam vazios.
kubectl create namespace kubepier
kubectl -n kubepier create serviceaccount kubepier-leitura
kubectl create clusterrolebinding kubepier-leitura \
--clusterrole=view --serviceaccount=kubepier:kubepier-leitura
kubectl -n kubepier apply -f - <<'EOF'
apiVersion: v1
kind: Secret
metadata:
name: kubepier-leitura-token
annotations:
kubernetes.io/service-account.name: kubepier-leitura
type: kubernetes.io/service-account-token
EOF
TOKEN=$(kubectl -n kubepier get secret kubepier-leitura-token -o jsonpath='{.data.token}' | base64 -d)
SERVER=$(kubectl config view --minify -o jsonpath='{.clusters[0].cluster.server}')
CA=$(kubectl config view --minify --raw -o jsonpath='{.clusters[0].cluster.certificate-authority-data}')
NOME=$(kubectl config current-context)
cat > kubepier.kubeconfig <<EOF
apiVersion: v1
kind: Config
clusters:
- name: $NOME
cluster: { server: $SERVER, certificate-authority-data: $CA }
users:
- name: kubepier-leitura
user: { token: $TOKEN }
contexts:
- name: $NOME
context: { cluster: $NOME, user: kubepier-leitura }
current-context: $NOME
EOF 3. Public access CIDRs do endpoint do EKS
Se o endpoint público do cluster aceita só alguns IPs, inclua os IPs de saída do Kubepier Web (listados acima e em Rede e IPs de saída) junto com os que já estão liberados. O comando substitui a lista inteira:
aws eks describe-cluster --name <cluster> --query cluster.resourcesVpcConfig.publicAccessCidrs
aws eks update-cluster-config --name <cluster> \
--resources-vpc-config endpointPublicAccess=true,publicAccessCidrs="<ip-1>/32,<ip-2>/32,<ips-ja-liberados>" Cluster EKS só com endpoint privado a web não alcança. Para ele, use o Kubepier Desktop pela sua VPN.
Erros comuns ao conectar o EKS
- "usa plugin exec" ao colar o kubeconfig na web: use a aba Conta de nuvem ou o kubeconfig com ServiceAccount.
- "sem permissão eks:ListClusters": a política IAM da chave não tem a permissão, em todas ou em algumas regiões.
- O cluster aparece, mas as listas dão 401 ou 403: falta a access entry da identidade IAM, ou a política associada.
- Cluster inacessível: o endpoint público não aceita os IPs de saída do Kubepier, ou o cluster só tem endpoint privado.