Pular para o conteúdo principal

🤖 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.

informação

Service Accounts são criadas com o kubectl. O Painel Nuvion não tem uma tela para esse recurso.


🚀 Antes de começar​

🚀 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.

aviso

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 default para 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: false na seção spec do pod.

❗ Problemas comuns​

SintomaCausaSolução
Pod não é criado e cita serviceaccount not foundNome da Service Account errado ou em outro namespaceConfira com kubectl get serviceaccounts
Forbidden ao usar o tokenA Service Account ainda não tem permissõesSiga as páginas Roles e RBAC
unknown command "token"kubectl antigoAtualize 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!