You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建不进行Base64编码的Kubernetes通用Secret?

无法禁用Kubernetes Secret的Base64编码

你无法禁用Kubernetes通用Secret的Base64编码——这是Kubernetes API对Secret资源的强制要求:Secret的data字段中所有值必须是Base64编码的字符串,没有绕过的方式。

为什么会自动编码?

当你使用kubectl create secret generic命令创建Secret时,kubectl工具会自动将你传入的明文值编码为Base64,这是完全符合Kubernetes API规范的行为。你看到的Secret示例里data.TestUser字段的值bXlwYXNz,正是明文mypass的Base64编码结果,这是Kubernetes存储Secret的标准格式。

但实际使用时无需手动解码

虽然Secret存储时是Base64编码的,但Kubernetes在将Secret提供给Pod使用时,会自动帮你解码为明文:

  • 若将Secret挂载为容器内的文件,文件内容就是明文;
  • 若将Secret注入为容器的环境变量,环境变量的值也是明文。

举个挂载使用的示例:

apiVersion: v1
kind: Pod
metadata:
  name: test-pod
  namespace: mynamespace
spec:
  containers:
  - name: test-container
    image: busybox
    command: ["sleep", "3600"]
    volumeMounts:
    - name: secret-volume
      mountPath: /etc/secret
  volumes:
  - name: secret-volume
    secret:
      secretName: passwords

此时容器内/etc/secret/TestUser文件的内容就是明文mypass,应用可以直接读取使用。

定义时用明文的替代方案

如果需要在Secret定义阶段使用明文书写(而非命令行传参),可以用stringData字段——这个字段允许你直接填入明文,Kubernetes在存储时会自动将其编码到data字段中:

apiVersion: v1
kind: Secret
metadata:
  name: passwords
  namespace: mynamespace
type: Opaque
stringData:
  TestUser: mypass

应用这个YAML后,最终存储的Secret依然会有Base64编码的data字段,但你在编写配置时无需手动编码。

内容的提问来源于stack exchange,提问作者TheDayAfterDark

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 21:53:20