Charger un fichier
  1. base64hub
  2. Outils web et jetons
  3. Décodeur de Secret Kubernetes

Décodeur de Secret Kubernetes pour le YAML de kubectl

Collez un Secret issu de kubectl get secret NAME -o yaml (ou en JSON) et chaque valeur data: est décodée dans un tableau : plus besoin de passer chaque clé dans base64 --decode.

Gratuit sans inscription, sans limites Local rien n'est envoyé Toutes les clés décodées en une passe, YAML multi-documents compris Mis à jour 27 oct. 2026

Traité dans votre navigateur. Cette page ne peut envoyer vos données nulle part – comment le savons-nous

Comment décoder un Secret Kubernetes

  1. Lancez kubectl get secret app-db -n shop -o yaml et collez la sortie dans la zone. Le JSON de -o json fonctionne aussi.
  2. Le tableau liste chaque clé avec sa valeur décodée et sa taille, ainsi que les boutons Copier et Copier le Base64.
  3. Le panneau de sortie contient le même Secret réécrit avec stringData, valeurs en clair. Les valeurs binaires restent dans data.
  4. Passez à Créer le Secret pour l’opération inverse : des lignes KEY=value en entrée, un Secret avec data en Base64 en sortie.

L’entrée peut aussi être une List issue de kubectl get secrets -o yaml, plusieurs documents séparés par ---, un manifeste rendu par Helm, un .dockerconfigjson seul ou une simple valeur Base64.

Exemple : ce que donne kubectl et ce que cela signifie

apiVersion: v1
data:
  DATABASE_URL: cG9zdGdyZXM6Ly9hcHA6czNjcjN0LVBhNTVAZGI6NTQzMi9zaG9w
  DB_PASSWORD: czNjcjN0LVBhNTUK
  DB_USER: YXBw
kind: Secret
metadata:
  name: app-db
  namespace: shop
type: Opaque
CléDécodéTaille
DATABASE_URLpostgres://app:s3cr3t-Pa55@db:5432/shop39 B
DB_PASSWORDs3cr3t-Pa55 plus un saut de ligne12 B
DB_USERapp3 B

Le mot de passe fait 11 caractères, mais la valeur fait 12 octets. Quelqu’un l’a créée avec echo 's3cr3t-Pa55' | base64, et le saut de ligne final fera échouer la connexion à la base de données. Sans le saut de ligne, le Base64 serait czNjcjN0LVBhNTU=.

Ce que reconnaît le décodeur

  • Les certificats et clés PEM comme tls.crt et tls.key dans un Secret kubernetes.io/tls sont signalés. Les certificats reçoivent un lien vers le décodeur de certificats pour vérifier l’expiration et les SAN.
  • Les valeurs JSON sont formatées.
  • Les valeurs binaires comme un keystore Java reçoivent leur type de fichier, un aperçu hex et un bouton Télécharger.
  • Les valeurs .dockerconfigjson et .dockercfg sont découpées en registre, nom d’utilisateur et mot de passe, avec auth décodé. Le décodeur .dockerconfigjson les met au premier plan.

Commandes kubectl d’une ligne

Une seule valeur. Échappez les points des noms de clés dans 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

Toutes les valeurs, avec la fonction de template base64decode intégrée à kubectl ou avec 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)'

Créer un Secret sans tomber dans le piège du saut de ligne :

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

D’autres recettes shell se trouvent sur la page Base64 en Bash.

Limites et problèmes courants

  • « Aucun Secret avec data ou stringData trouvé » : le texte collé est probablement un Deployment ou une ConfigMap. Les valeurs d’une ConfigMap sont en texte brut et n’ont pas besoin d’être décodées.
  • Taille : un Secret est limité à 1 Mio au total. Créer le Secret vérifie la limite, les noms de clés et le nom de type DNS avant que vous n’appliquiez quoi que ce soit.
  • Fonctions YAML : le lecteur couvre ce que produisent kubectl, Helm et Kustomize, y compris les scalaires en bloc et les documents multiples. Les ancres, alias et clés de fusion ne sont pas pris en charge.
  • Les Secrets de release Helm (sh.helm.release.v1.*) contiennent du Base64 de données gzip à l’intérieur de la valeur data en Base64. Décodez ici la couche externe, puis utilisez le décodeur Base64 gzip.

FAQ

Comment décoder un Secret Kubernetes avec kubectl ?

Pour une clé : kubectl get secret app-db -o jsonpath='{.data.DB_PASSWORD}' | base64 --decode. Pour toutes les clés à la fois, collez ici la sortie de -o yaml, ou utilisez les commandes go-template ou jq d’une ligne données sur cette page.

Les Secrets Kubernetes sont-ils chiffrés ?

Le champ data n’est que du Base64, que toute personne ayant un accès en lecture peut inverser. Le chiffrement au repos dans etcd est un réglage séparé du cluster, et c’est RBAC qui décide qui peut lire les Secrets. Voir encodage ou chiffrement.

Pourquoi mon secret décodé se termine-t-il par un saut de ligne ?

La valeur a été créée avec echo au lieu de echo -n : le saut de ligne a donc été encodé aussi. Son Base64 se termine alors souvent par K, o= ou Cg==. Recréez-la avec printf '%s' value | base64 ou avec kubectl create secret --from-literal.

Quelle est la différence entre data et stringData ?

data contient des valeurs en Base64, stringData accepte du texte brut que le serveur d’API encode pour vous à l’écriture. Les lectures renvoient toujours data. Le panneau de sortie réécrit ici le Secret avec stringData pour que vous puissiez le modifier et le réappliquer.