Saltar al contenido principal

🤖 Service Accounts

A veces una aplicación dentro del clúster necesita comunicarse con el propio Kubernetes, por ejemplo, para listar otros pods. La Service Account es la "credencial" de la aplicación: es la identidad que el pod usa para presentarse al clúster. Para dar acceso a personas, vea Users.

Todo namespace ya viene con una Service Account llamada default.

info

Las Service Accounts se crean con kubectl. El Panel Nuvion no tiene una pantalla para este recurso.


🚀 Antes de comenzar​

🚀 1. Listar las Service Accounts​

kubectl get serviceaccounts

Verá al menos la default.

🚀 2. Crear una Service Account​

kubectl create serviceaccount app-sa

Salida esperada: serviceaccount/app-sa created

🚀 3. Verificar​

kubectl describe serviceaccount app-sa

🚀 4. Usar la Service Account en un pod​

Cree el archivo 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

Salida esperada: ca.crt namespace token. Estos archivos son la identidad del pod, entregados automáticamente por Kubernetes.

🚀 5. Generar un token (para uso fuera del clúster)​

kubectl create token app-sa --duration=1h

El comando muestra un token temporal, válido por 1 hora.

aviso

El token es una credencial. No comparta ni publique este valor.

✅ Cómo saber si funcionó​

El ls del paso 4 muestra los tres archivos, y el paso 5 devuelve un texto largo (el token).

🔒 Buenas prácticas​

  • Cree una Service Account por aplicación, en lugar de usar la default para todo.
  • Una Service Account nueva no tiene permisos. Dé solo lo necesario, usando Roles y RBAC.
  • Si la aplicación no necesita comunicarse con el clúster, desactive el token agregando automountServiceAccountToken: false en la sección spec del pod.

❗ Problemas comunes​

SíntomaCausaSolución
El pod no se crea y cita serviceaccount not foundNombre de la Service Account incorrecto o en otro namespaceVerifique con kubectl get serviceaccounts
Forbidden al usar el tokenLa Service Account aún no tiene permisosSiga las páginas Roles y RBAC
unknown command "token"kubectl antiguoActualice kubectl (versión 1.24 o superior)

🧹 Limpieza​

kubectl delete pod pod-sa
kubectl delete serviceaccount app-sa

➡️ Próximo paso: Roles

🧠 ¿Dudas?​

¡Hable con nuestro equipo de soporte técnico de SaveinCloud!