Subir un archivo
  1. base64hub
  2. Herramientas web y de tokens
  3. Decodificador de Secrets de Kubernetes

Decodificador de Secrets de Kubernetes para YAML de kubectl

Pega un Secret de kubectl get secret NAME -o yaml (o JSON) y cada valor de data: se decodifica en una tabla, sin tener que pasar cada clave por base64 --decode.

Gratis sin registro, sin límites Local no se sube nada Todas las claves decodificadas de una vez, también YAML con varios documentos Actualizado 27 oct 2026

Se procesa en tu navegador. Esta página no puede enviar tus datos a ninguna parte – cómo lo sabemos

Cómo decodificar un Secret de Kubernetes

  1. Ejecuta kubectl get secret app-db -n shop -o yaml y pega la salida en el cuadro. El JSON de -o json también funciona.
  2. La tabla lista cada clave con su valor decodificado y su tamaño, además de los botones Copiar y Copiar Base64.
  3. El panel de salida contiene el mismo Secret reescrito con stringData, con los valores en texto plano. Los valores binarios se quedan en data.
  4. Cambia a Crear Secret para el proceso inverso: entran líneas KEY=value y sale un Secret con data en Base64.

La entrada también puede ser una List de kubectl get secrets -o yaml, varios documentos separados por ---, un manifiesto renderizado por Helm, un .dockerconfigjson suelto o un único valor Base64.

Ejemplo: lo que te da kubectl y lo que significa

apiVersion: v1
data:
  DATABASE_URL: cG9zdGdyZXM6Ly9hcHA6czNjcjN0LVBhNTVAZGI6NTQzMi9zaG9w
  DB_PASSWORD: czNjcjN0LVBhNTUK
  DB_USER: YXBw
kind: Secret
metadata:
  name: app-db
  namespace: shop
type: Opaque
ClaveDecodificadoTamaño
DATABASE_URLpostgres://app:s3cr3t-Pa55@db:5432/shop39 B
DB_PASSWORDs3cr3t-Pa55 más un salto de línea12 B
DB_USERapp3 B

La contraseña tiene 11 caracteres, pero el valor ocupa 12 bytes. Alguien la creó con echo 's3cr3t-Pa55' | base64, y el salto de línea final hará fallar el inicio de sesión en la base de datos. El Base64 sin el salto de línea sería czNjcjN0LVBhNTU=.

Qué reconoce el decodificador

  • Certificados y claves PEM, como tls.crt y tls.key en un Secret kubernetes.io/tls, se señalan. Los certificados reciben un enlace al decodificador de certificados para revisar la caducidad y los SAN.
  • Los valores JSON se muestran formateados.
  • Los valores binarios, como un keystore de Java, muestran su tipo de archivo, una vista previa en hex y un botón Descargar.
  • Los valores .dockerconfigjson y .dockercfg se separan en registro, usuario y contraseña, con auth decodificado. El decodificador de .dockerconfigjson los muestra en primer lugar.

Comandos de kubectl de una línea

Un valor. Escapa los puntos de los nombres de clave dentro de jsonpath:

kubectl get secret app-db -o jsonpath='{.data.DB_PASSWORD}' | base64 --decode
kubectl get secret app-tls -o jsonpath='{.data.tls\.crt}' | base64 --decode

Todos los valores, con la función de plantilla base64decode integrada en kubectl o con jq:

kubectl get secret app-db -o go-template='{{range $k, $v := .data}}{{$k}}={{$v | base64decode}}{{"\n"}}{{end}}'
kubectl get secret app-db -o json | jq '.data | map_values(@base64d)'

Crear un Secret sin caer en la trampa del salto de línea:

kubectl create secret generic app-db --from-literal=DB_PASSWORD='s3cr3t-Pa55' --dry-run=client -o yaml

Hay más recetas de shell en la página de Base64 en Bash.

Límites y problemas habituales

  • «No se encontró ningún Secret con data o stringData»: probablemente lo pegado es un Deployment o un ConfigMap. Los valores de un ConfigMap son texto plano y no necesitan decodificarse.
  • Tamaño: un Secret está limitado a 1 MiB en total. Crear Secret comprueba el límite, los nombres de las claves y el nombre de estilo DNS antes de que apliques nada.
  • Funciones de YAML: el lector cubre lo que generan kubectl, Helm y Kustomize, incluidos los escalares de bloque y los documentos múltiples. No admite anclas, alias ni claves de fusión.
  • Los Secrets de releases de Helm (sh.helm.release.v1.*) contienen Base64 de datos gzip dentro del valor data en Base64. Decodifica aquí la capa exterior y luego usa el decodificador Base64 gzip.

Preguntas frecuentes

¿Cómo decodifico un secret de Kubernetes con kubectl?

Para una clave: kubectl get secret app-db -o jsonpath='{.data.DB_PASSWORD}' | base64 --decode. Para todas a la vez, pega aquí la salida de -o yaml, o usa los comandos de una línea con go-template o jq de esta página.

¿Los Secrets de Kubernetes están cifrados?

El campo data es solo Base64, y cualquiera con permiso de lectura puede revertirlo. El cifrado en reposo en etcd es un ajuste aparte del clúster, y RBAC decide quién puede leer los Secrets. Consulta codificación frente a cifrado.

¿Por qué mi secret decodificado tiene un salto de línea al final?

El valor se creó con echo en lugar de echo -n, así que el salto de línea también se codificó. Su Base64 suele terminar entonces en K, o= o Cg==. Vuelve a crearlo con printf '%s' value | base64 o con kubectl create secret --from-literal.

¿Qué diferencia hay entre data y stringData?

data contiene valores en Base64; stringData acepta texto plano que el servidor de la API codifica por ti al escribir. Las lecturas siempre devuelven data. El panel de salida de esta página reescribe el Secret con stringData para que puedas editarlo y volver a aplicarlo.