Generador de Secrets de Kubernetes
Introduce pares clave/valor o pega un archivo .env y obtén un Secret de Kubernetes listo para aplicar: los valores se codifican en base64 por ti, los nombres y las claves se validan y se muestra el comando kubectl equivalente. Cambia a Decodificar para leer los valores de un Secret existente.
Última actualización:
Etiquetas, anotaciones y opciones
Todo se codifica y decodifica en esta pestaña del navegador. Recuerda: base64 es una codificación, no un cifrado, así que trata la salida como un secreto.
Cómo usar Generador de Secrets de Kubernetes
- Ponle nombre al Secret y elige un namespace y un tipo. Opaque es el tipo de uso general para la configuración de apps.
- Añade los datos como filas de clave/valor, pega un archivo .env o añade un archivo, como un certificado o una configuración JSON, como clave.
- Elige data o stringData: data guarda valores en base64; stringData te permite mantener texto legible que el servidor de la API codifica al escribir.
- Corrige las notas en rojo, luego copia o descarga el YAML y ejecuta
kubectl apply -f, o usa la pestaña kubectl. - ¿Necesitas leer un Secret? Abre Decodificar Secret y pega la salida de
kubectl get secret NAME -o yaml.
Tipos de Secret de Kubernetes
| type | Claves obligatorias | Uso típico | Atajo de kubectl |
|---|---|---|---|
Opaque | Cualquiera | Contraseñas de apps, tokens de API, cadenas de conexión | create secret generic |
kubernetes.io/dockerconfigjson | .dockerconfigjson | Descargar imágenes de un registro privado mediante imagePullSecrets | create secret docker-registry |
kubernetes.io/tls | tls.crt, tls.key | Certificados HTTPS para un Ingress | create secret tls |
kubernetes.io/basic-auth | username y/o password | Credenciales para autenticación básica | create secret generic --type=… |
kubernetes.io/ssh-auth | ssh-privatekey | Git por SSH, claves de despliegue | create secret generic --type=… |
Usar el Secret en un pod
Carga cada clave como variable de entorno:
containers:
- name: app
image: example/app:1.4.2
envFrom:
- secretRef:
name: app-credentialsO móntalo como archivos, un archivo por clave, lo que va bien para certificados y archivos de configuración y recoge las actualizaciones sin reiniciar el pod:
volumeMounts:
- name: creds
mountPath: /etc/creds
readOnly: true
volumes:
- name: creds
secret:
secretName: app-credentialsConsejos para manejar Secrets de forma segura
- No subas el YAML de un Secret a Git. Cualquiera puede decodificar base64. Usa una herramienta como Sealed Secrets, SOPS o un operador de secretos externos para flujos GitOps.
- Cuidado con los saltos de línea finales.
echo "pass" | base64también codifica un salto de línea; usaecho -noprintf. Esta herramienta codifica exactamente lo que escribes. - Limita el acceso con RBAC:
getylistsobre Secrets revelan su contenido, y también el permiso para crear pods en el namespace. - Genera valores seguros con el Generador de contraseñas, y crea el Deployment que usa el Secret con el Generador de YAML de Kubernetes.
Preguntas frecuentes
¿Por qué los valores de un Secret de Kubernetes se codifican en base64?
El campo data de un Secret contiene bytes arbitrarios, como certificados o almacenes de claves, y base64 permite que esos bytes viajen de forma segura dentro de YAML y JSON. Es solo una codificación, no un cifrado: cualquiera que pueda leer el Secret puede decodificarlo, así que protege el acceso con RBAC y considera el cifrado en reposo para etcd.
¿Cuál es la diferencia entre data y stringData?
data espera valores codificados en base64. stringData acepta texto plano y es una comodidad de solo escritura: el servidor de la API codifica los valores y los combina en data al guardar el Secret, y stringData prevalece si la misma clave está en ambos. Cuando vuelves a leer el Secret, siempre obtienes data en base64.
¿Cómo creo un Secret a partir de un archivo .env?
Pega el archivo en la vista Pegar .env de esta herramienta y descarga el YAML, o ejecuta kubectl create secret generic NAME --from-env-file=.env. Cada línea KEY=value se convierte en una clave del Secret. Después puedes cargar todas las claves en un contenedor como variables de entorno con envFrom y secretRef.
¿Cómo decodifico un Secret de Kubernetes?
Pega la salida de kubectl get secret NAME -o yaml en la pestaña Decodificar Secret para ver cada valor. En la línea de comandos puedes decodificar una clave con kubectl get secret NAME -o jsonpath='{.data.KEY}' canalizado a base64 --decode.
¿Qué nombres y claves están permitidos?
El nombre del Secret debe ser un subdominio DNS: letras minúsculas, dígitos, guiones y puntos, hasta 253 caracteres. Las claves de datos pueden contener letras, dígitos, guiones, guiones bajos y puntos. El namespace es una etiqueta DNS de como máximo 63 caracteres.
¿Qué tamaño puede tener un Secret?
Cada Secret está limitado a 1 MiB de datos, así que los archivos grandes deben ir en un volumen o en almacenamiento de objetos. Además, muchos Secrets pequeños son mejores que uno enorme, porque cada uno se envía a todos los nodos que ejecutan un pod que lo usa.
¿Qué hace immutable: true?
Un Secret inmutable no puede cambiar sus datos después de crearse; en su lugar, se elimina y se vuelve a crear. Esto protege contra ediciones accidentales y permite que el kubelet deje de vigilarlo, lo que reduce la carga del servidor de la API en clústeres grandes.
¿Se prueban todas las herramientas de FreeToolCabin para comprobar su calidad y precisión?
Sí. Cada herramienta del sitio pasa pruebas automáticas en navegadores reales para comprobar que el resultado es correcto y que no hay errores. Si encuentras un fallo o tienes una sugerencia, escríbenos a [email protected] y lo revisaremos.