AKS · Azure Kubernetes Service

Como conectar um cluster AKS

Para conectar um cluster AKS na sua máquina, basta o az aks get-credentials. Para conectar no Kubepier Web, que roda fora da sua máquina, o caminho é outro: a conta Azure ou uma ServiceAccount. Esta página mostra os dois e o que liberar na rede 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 AKS para o kubeconfig

O az aks get-credentials grava o cluster, o usuário e o contexto no ~/.kube/config:

az login
az aks get-credentials --resource-group <grupo> --name <cluster>
kubectl get nodes

Com --context <nome>, o contexto já sai com o nome que você quiser. Com --admin, vem a credencial de administrador das contas locais, quando o cluster ainda tem contas locais ligadas.

2. AKS com Entra ID: o kubelogin

Em cluster AKS com Entra ID (o antigo Azure AD), o kubeconfig não leva token: ele chama o kubelogin, um plugin exec, que pega o token na hora. Instale o kubelogin e converta o kubeconfig para usar o login do Azure CLI:

az aks install-cli
kubelogin convert-kubeconfig -l azurecli
kubectl get nodes

O plugin exec roda na sua máquina, com o seu login. Por isso esse kubeconfig funciona no kubectl e no Kubepier Desktop, mas não serve para colar num serviço que roda em outro lugar.

Conectar o cluster AKS no Kubepier Desktop

O desktop lê o mesmo ~/.kube/config, com o kubelogin, como o kubectl. Depois do az aks get-credentials, o cluster aparece no catálogo, no cliente cuja palavra-chave bate com o nome.

Conectar o cluster AKS no Kubepier Web: conta Azure

A web conecta do servidor do Kubepier, onde não existe o seu login nem o kubelogin. Por isso um contexto com plugin exec é recusado ao colar o kubeconfig, e o caminho é a aba Conta de nuvem, com um Service Principal. O Kubepier varre as assinaturas, cadastra cada AKS encontrado e gera o acesso a cada leitura: com Entra ID, o mesmo token que o kubelogin geraria; com contas locais, a credencial de listClusterUserCredential. Sincronizar relê a conta.

O Service Principal precisa de Reader (para listar os AKS) e de Azure Kubernetes Service Cluster User Role (para o endereço e a CA). Para ler o cluster com Entra ID, também de um papel nele: Azure Kubernetes Service RBAC Reader, com Azure RBAC, ou um ClusterRoleBinding para o objectId dele, com o RBAC do Kubernetes:

# Service Principal (a saída traz appId, password e tenant)
az ad sp create-for-rbac --name kubepier-leitura --role Reader --scopes /subscriptions/<assinatura>

az role assignment create --assignee <appId> \
  --role "Azure Kubernetes Service Cluster User Role" --scope /subscriptions/<assinatura>

# Cluster com Entra ID e Azure RBAC
az role assignment create --assignee <appId> \
  --role "Azure Kubernetes Service RBAC Reader" --scope /subscriptions/<assinatura>

# Cluster com Entra ID e RBAC do Kubernetes
kubectl create clusterrolebinding kubepier-leitura --clusterrole=view --user=<objectId>

No cadastro, informe Tenant ID, App ID (client) e Client secret; as assinaturas são opcionais. O app mostra esses comandos já com o appId e o objectId da credencial.

Ou um kubeconfig só leitura com ServiceAccount

Se você não quer cadastrar a conta Azure, 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 AKS 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. Authorized IP ranges do AKS

Se a API 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:

az aks show -g <grupo> -n <cluster> --query apiServerAccessProfile.authorizedIpRanges
az aks update -g <grupo> -n <cluster> \
  --api-server-authorized-ip-ranges <ip-1>/32,<ip-2>/32,<ips-ja-liberados>

Cluster AKS privado (sem endpoint público) a web não alcança. Para ele, use o Kubepier Desktop pela sua VPN.

Erros comuns ao conectar o AKS

  • "usa plugin exec (kubelogin)" ao colar o kubeconfig na web: use a aba Conta de nuvem ou o kubeconfig com ServiceAccount.
  • A conta Azure não acha os clusters: falta Reader ou Azure Kubernetes Service Cluster User Role na assinatura ou no resource group.
  • O cluster aparece, mas as listas dão 403: com Entra ID, falta o papel no cluster (RBAC Reader ou o ClusterRoleBinding).
  • Cluster inacessível: a API não aceita os IPs de saída do Kubepier, ou o cluster é privado.

Começar grátis