0Pricing
DevOps Bootcamp · 课时

模板化 Kubernetes Secret 资源

渲染 Secret 对象而不泄露值

模板化 Kubernetes Secret 资源 是 CoddyKit 上的免费 DevOps Bootcamp 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 DevOps Bootcamp 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 DevOps Bootcamp 课程共包含 4 节课。

图表可以生成机密资源

有时,您的图表必须自行生成 Kubernetes 机密资源对象。只要处理得当,您可以为其创建模板而不会泄露值。

机密清单的结构

Kubernetes 机密资源只是一个包含 data 部分的清单。data 下的每个值都必须是经过 Base64 编码的文本。

apiVersion: v1
kind: Secret
metadata:
  name: db-credentials

使用 b64enc 编码 data

在data下,您需要对每个值进行编码。Sprig 辅助函数 b64enc 会将明文字符串转换为 Kubernetes 所需的 Base64 格式。

data:
  password: {{ .Values.password | b64enc }}

使用 stringData 跳过编码

如果您想避免手动使用 b64enc,请优先选择stringData。Kubernetes 会在服务器端为您编码这些值。

stringData:
  password: {{ .Values.password | quote }}

编码仍然不是机密

请记住,渲染到清单中的值只是经过编码的内容。任何能够读回它的人都可以立即将其解码。

不要在 NOTES 中打印它

一种常见的泄露方式是将值回显到NOTES.txt中。请改为打印获取方式,这样明文就不会出现在命令输出中。

复用现有机密资源

更好的做法是让用户指向他们在其他地方创建的existingSecret,这样您的图表根本不会接收到该值。

{{- if not .Values.existingSecret }}
kind: Secret
{{- end }}

使用 require 要求必须提供值

当机密信息确实是必需的时,如果值缺失,required函数会显示清晰的消息并停止渲染。

password: {{ required "password is required" .Values.password | b64enc }}

挂载而不是内联

让 Pod 通过secretKeyRef或挂载的卷读取机密资源,而不是将字面值直接写入容器环境变量。

valueFrom:
  secretKeyRef:
    name: db-credentials
    key: password

添加注解以支持轮换

要在机密资源发生变化时滚动更新 Pod,请在部署资源中添加校验和注解,使新值触发重启。

checksum/secret: {{ include (print $.Template.BasePath "/secret.yaml") . | sha256sum }}

组合使用这些策略

最可靠的图表会组合使用这些方法:优先采用现有或外部机密信息,仅在需要时进行编码,并且绝不回显该值。

快速检查

如何让 Kubernetes 为您执行 Base64 编码?

回顾

您已经学会如何安全地为机密资源创建模板:使用 b64enc 或 stringData 进行编码,优先使用现有机密信息,并且绝不打印该值。🎉

常见问题解答

「模板化 Kubernetes Secret 资源」课时是免费的吗?

是的 — 「模板化 Kubernetes Secret 资源」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 DevOps Bootcamp 课程的其余内容,请升级到 CoddyKit PRO。 DevOps Bootcamp 课程共包含 4 节课。

「模板化 Kubernetes Secret 资源」这节课中我会学到什么?

渲染 Secret 对象而不泄露值 你通过在浏览器中直接运行的动手代码来练习 DevOps Bootcamp,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 DevOps Bootcamp 需要有经验吗?

无需任何先前经验。CoddyKit 上的 DevOps Bootcamp 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。

「模板化 Kubernetes Secret 资源」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 DevOps Bootcamp 课中编写并运行代码吗?

能。每节 DevOps Bootcamp 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 为什么不应将机密信息放入 values.yaml
  2. 使用 helm-secrets 和 SOPS 加密值
  3. 从外部机密信息运算符获取机密信息
  4. 模板化 Kubernetes Secret 资源
← 返回 DevOps Bootcamp