🔐 Secrets
El Secret guarda información sensible, como contraseñas de bases de datos, tokens y claves de API, separadas del código de la aplicación y de las configuraciones comunes (ConfigMap).
Por defecto, el Secret solo está codificado en base64, no cifrado. Cualquier persona con permiso de lectura de Secrets en el clúster puede ver el valor. Por eso, controle quién tiene acceso usando RBAC.
Los Secrets se crean con kubectl. El Panel Nuvion no tiene una pantalla para este recurso.
🚀 Antes de comenzar
- Tener el acceso al clúster configurado (vea Acceso al Clúster).
- Use valores de prueba en esta guía. No use contraseñas reales.
🚀 1. Crear un Secret
kubectl create secret generic db-secret --from-literal=DB_USER=app --from-literal=DB_PASSWORD='troque-esta-senha'
Salida esperada: secret/db-secret created
🚀 2. Verificar el Secret
kubectl get secret db-secret
kubectl describe secret db-secret
El describe muestra solo el tamaño de cada valor, no el contenido.
🚀 3. Ver el valor almacenado
- 🐧 Linux / macOS
- 🪟 Windows (PowerShell)
kubectl get secret db-secret -o jsonpath='{.data.DB_PASSWORD}' | base64 -d
$v = kubectl get secret db-secret -o jsonpath="{.data.DB_PASSWORD}"
[System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($v))
Esto muestra por qué es importante restringir el acceso a los Secrets.
🚀 4. Usar el Secret en un pod
Cree el archivo pod-secret.yaml:
apiVersion: v1
kind: Pod
metadata:
name: pod-secret
spec:
containers:
- name: app
image: busybox
command: ["sh", "-c", "echo Usuario: $DB_USER; sleep 3600"]
env:
- name: DB_USER
valueFrom:
secretKeyRef:
name: db-secret
key: DB_USER
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: db-secret
key: DB_PASSWORD
kubectl apply -f pod-secret.yaml
kubectl logs pod-secret
Salida esperada: Usuario: app
Para confirmar que la contraseña llegó al pod sin mostrarla:
kubectl exec pod-secret -- sh -c 'test -n "$DB_PASSWORD" && echo "Senha definida"'
🔒 Buenas prácticas
- Nunca imprima contraseñas en los logs de la aplicación.
- No guarde archivos YAML con contraseñas en repositorios (Git).
- Dé acceso de lectura a Secrets solo a quien lo necesita.
- Cambie las contraseñas periódicamente.
✅ Cómo saber si funcionó
El pod queda Running, el log muestra Usuario: app y el último comando muestra
Senha definida.
❗ Problemas comunes
| Síntoma | Causa | Solución |
|---|---|---|
Pod con CreateContainerConfigError | El Secret o la clave no existe | Verifique el nombre del Secret y de la clave (key) |
secrets "db-secret" not found | Secret en otro namespace | Créelo en el mismo namespace del pod |
| Una contraseña con caracteres especiales rompe el comando | Faltan comillas | Coloque el valor entre comillas simples |
🧹 Limpieza
kubectl delete pod pod-secret
kubectl delete secret db-secret
🧠 ¿Dudas?
¡Hable con nuestro equipo de soporte técnico de SaveinCloud!