模板化 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 反馈 — 无需本地设置。
此课程中的所有课时
- 为什么不应将机密信息放入 values.yaml
- 使用 helm-secrets 和 SOPS 加密值
- 从外部机密信息运算符获取机密信息
- 模板化 Kubernetes Secret 资源