上传文件
  1. base64hub
  2. Web 与令牌工具
  3. Kubernetes Secret 解码器

Kubernetes Secret 解码器(kubectl YAML)

粘贴 kubectl get secret NAME -o yaml(或 JSON)输出的 Secret,每个 data: 值都会被解码并列在表格中,不必再把每个键逐一通过管道交给 base64 --decode。

免费 无需注册,不限次数 本地 不上传任何内容 所有键 一次全部解码,也支持多文档 YAML 更新于 2026年10月27日

在你的浏览器中处理。此页面无法将你的数据发送到任何地方: 我们如何确认

如何解码 Kubernetes Secret

  1. 运行 kubectl get secret app-db -n shop -o yaml,把输出粘贴到框中。-o json 的 JSON 输出同样可以。
  2. 表格列出每个键及其解码值和大小,并提供 复制 和 复制 Base64 按钮。
  3. 输出窗格中是改写为 stringData 的同一个 Secret,值为纯文本。二进制值保留在 data 中。
  4. 切换到 生成 Secret 可以反向操作:输入 KEY=value 行,输出带 Base64 data 的 Secret。

输入还可以是 kubectl get secrets -o yaml 输出的 List、用 --- 分隔的多个文档、Helm 渲染的清单、单独的 .dockerconfigjson,或者只是一个 Base64 值。

示例:kubectl 给出的内容及其含义

apiVersion: v1
data:
  DATABASE_URL: cG9zdGdyZXM6Ly9hcHA6czNjcjN0LVBhNTVAZGI6NTQzMi9zaG9w
  DB_PASSWORD: czNjcjN0LVBhNTUK
  DB_USER: YXBw
kind: Secret
metadata:
  name: app-db
  namespace: shop
type: Opaque
键解码结果大小
DATABASE_URLpostgres://app:s3cr3t-Pa55@db:5432/shop39 B
DB_PASSWORDs3cr3t-Pa55 加一个换行符12 B
DB_USERapp3 B

密码是 11 个字符,值却有 12 个字节。有人用 echo 's3cr3t-Pa55' | base64 创建了它,末尾的换行符会导致数据库登录失败。不带换行符的 Base64 应该是 czNjcjN0LVBhNTU=。

解码器能识别什么

  • PEM 证书和密钥,例如 kubernetes.io/tls Secret 中的 tls.crt 和 tls.key,会被标记出来。证书会附带一个指向 证书解码器 的链接,用于检查过期时间和 SAN。
  • JSON 值 会被格式化。
  • 二进制值(例如 Java keystore)会显示文件类型、hex 预览和一个 下载 按钮。
  • .dockerconfigjson 和 .dockercfg 值会被拆分为镜像仓库、用户名和密码,auth 也会被解码。.dockerconfigjson 解码器 会优先显示这些信息。

kubectl 单行命令

单个值。在 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

所有值,使用 kubectl 内置的 base64decode 模板函数或 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)'

创建 Secret 时避开换行符陷阱:

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

更多 shell 用法见 Bash Base64 页面。

局限与常见问题

  • “此输入中未找到含 data 或 stringData 的 Secret”:粘贴的内容可能是 Deployment 或 ConfigMap。ConfigMap 的值是纯文本,不需要解码。
  • 大小:一个 Secret 总共不能超过 1 MiB。生成 Secret 会在你 apply 之前检查大小限制、键名以及 DNS 风格的名称。
  • YAML 特性:读取器支持 kubectl、Helm 和 Kustomize 生成的内容,包括块标量和多文档。不支持锚点、别名和合并键。
  • Helm release Secret(sh.helm.release.v1.*)在 Base64 的 data 值里面又包含 gzip 数据的 Base64。先在这里解码外层,再使用 gzip Base64 解码器。

常见问题

怎样用 kubectl 解码 Kubernetes Secret?

单个键:kubectl get secret app-db -o jsonpath='{.data.DB_PASSWORD}' | base64 --decode。要一次解码所有键,把 -o yaml 的输出粘贴到这里,或使用本页的 go-template 或 jq 单行命令。

Kubernetes Secret 是加密的吗?

data 字段只是 Base64,任何有读权限的人都能还原。etcd 的静态加密是单独的集群设置,谁能读取 Secret 则由 RBAC 决定。参见 编码与加密的区别。

为什么解码后的 Secret 末尾有个换行符?

这个值是用 echo 而不是 echo -n 创建的,所以换行符也被编码了进去。这时它的 Base64 常常以 K、o= 或 Cg== 结尾。请用 printf '%s' value | base64 或 kubectl create secret --from-literal 重新创建。

data 和 stringData 有什么区别?

data 存放 Base64 值,stringData 接受纯文本,由 API 服务器在写入时替你编码。读取时返回的总是 data。这里的输出窗格会把 Secret 改写为 stringData 形式,方便你编辑后重新 apply。