🤖 Service Accounts
Às vezes uma aplicação dentro do cluster precisa conversar com o próprio Kubernetes, por exemplo, para listar outros pods. A Service Account é o "crachá" da aplicação: é a identidade que o pod usa para se apresentar ao cluster. Para dar acesso a pessoas, veja Users.
Todo namespace já vem com uma Service Account chamada default.
Service Accounts são criadas com o kubectl. O Painel Nuvion não tem uma tela para esse recurso.
🚀 Antes de começar
- Ter o acesso ao cluster configurado (veja Acesso ao Cluster).
🚀 1. Listar as Service Accounts
kubectl get serviceaccounts
Você verá pelo menos a default.
🚀 2. Criar uma Service Account
kubectl create serviceaccount app-sa
Saída esperada: serviceaccount/app-sa created
🚀 3. Verificar
kubectl describe serviceaccount app-sa
🚀 4. Usar a Service Account em um pod
Crie o arquivo pod-sa.yaml:
apiVersion: v1
kind: Pod
metadata:
name: pod-sa
spec:
serviceAccountName: app-sa
containers:
- name: app
image: busybox
command: ["sh", "-c", "sleep 3600"]
kubectl apply -f pod-sa.yaml
kubectl exec pod-sa -- ls /var/run/secrets/kubernetes.io/serviceaccount
Saída esperada: ca.crt namespace token. Esses arquivos são a identidade do
pod, entregues automaticamente pelo Kubernetes.
🚀 5. Gerar um token (para uso fora do cluster)
kubectl create token app-sa --duration=1h
O comando mostra um token temporário, válido por 1 hora.
O token é uma credencial. Não compartilhe nem publique esse valor.
✅ Como saber se deu certo
O ls do passo 4 mostra os três arquivos, e o passo 5 devolve um texto longo
(o token).
🔒 Boas práticas
- Crie uma Service Account por aplicação, em vez de usar a
defaultpara tudo. - Uma Service Account nova não tem permissões. Dê somente o necessário, usando Roles e RBAC.
- Se a aplicação não precisa falar com o cluster, desative o token adicionando
automountServiceAccountToken: falsena seçãospecdo pod.
❗ Problemas comuns
| Sintoma | Causa | Solução |
|---|---|---|
Pod não é criado e cita serviceaccount not found | Nome da Service Account errado ou em outro namespace | Confira com kubectl get serviceaccounts |
Forbidden ao usar o token | A Service Account ainda não tem permissões | Siga as páginas Roles e RBAC |
unknown command "token" | kubectl antigo | Atualize o kubectl (versão 1.24 ou superior) |
🧹 Limpeza
kubectl delete pod pod-sa
kubectl delete serviceaccount app-sa
➡️ Próximo passo: Roles
🧠 Dúvidas?
Fale com nosso time de suporte técnico da SaveinCloud!