Saltar al contenido principal

🔐 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).

aviso

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.

info

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​

kubectl get secret db-secret -o jsonpath='{.data.DB_PASSWORD}' | base64 -d

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íntomaCausaSolución
Pod con CreateContainerConfigErrorEl Secret o la clave no existeVerifique el nombre del Secret y de la clave (key)
secrets "db-secret" not foundSecret en otro namespaceCréelo en el mismo namespace del pod
Una contraseña con caracteres especiales rompe el comandoFaltan comillasColoque 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!