在本地覆盖库的默认值
为每个使用者自定义共享模板
在本地覆盖库的默认值 是 CoddyKit 上的免费 DevOps Bootcamp 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 DevOps Bootcamp 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 DevOps Bootcamp 课程共包含 4 节课。
共享但不僵化
优秀的库会设置合理的默认值,同时允许每个使用方进行调整。主要的调节手段是局部模板在渲染时读取的值。
通过值控制行为
由于局部模板会读取 .Values,您的 Chart 只需在自己的 values.yaml 中设置相应的键,就能自定义共享输出。
# your values.yaml
image:
repository: nginx
tag: "1.27"库依赖默认值
编写良好的局部模板会将读取操作包装在默认值函数中,因此未设置的值可以平稳地回退,而不会渲染为空。
replicas: {{ .Values.replicaCount | default 1 }}仅覆盖该键
要更改一个默认值,只需在您的值中设置该键即可。库会保留其他所有回退值,因此您只覆盖所需的最少内容。
# your values.yaml
replicaCount: 3覆盖整个局部模板
需要进行更大的更改吗?请在您自己的图表中重新定义这个具名模板。同名模板的最后一次定义会生效,因此您的版本会替换库中的版本。
{{- define "common.labels" -}}
team: payments
{{- end -}}最后定义优先
当两个图表定义了相同的模板名称时,Helm 会使用最后加载的那个模板。您的应用程序图表可以有意覆盖库中的局部模板。
包装而不是替换
通常,更简洁的做法是:定义一个新的局部模板,先包含库中的局部模板,再追加您需要的字段。这样既能扩展功能,又不会丢失上游逻辑。
{{- define "app.labels" -}}
{{ include "common.labels" . }}
tier: backend
{{- end -}}传入自定义作用域
不要传入根点,而是向局部模板传入一个缩小后的上下文,使其从值的某个子树中读取内容,并在每次调用时调整输出。
{{ include "common.resources" .Values.web }}构建合并上下文
如需更精细的控制,可以构建一个混合根上下文和覆盖项的dict,然后将其传入。局部模板看到的正是您组装出的那些值。
{{ include "common.tpl" (dict "top" . "name" "web") }}确认覆盖已生效
完成覆盖后,请务必运行helm template,确认您的值或重新定义的局部模板生成了预期的清单。
helm template my-release . | grep replicas尽量保持覆盖最小化
请先依赖值,只有在必要时才重新定义局部模板。小范围的本地覆盖可以让您的图表与库的升级保持一致。
快速检查
您的图表及其库都定义了 common.labels。Helm 实际使用的是哪个定义?
回顾:本地覆盖
请先通过值自定义库;需要时再重新定义或包装局部模板,传入自定义作用域,最后使用 helm template 进行验证。✅
常见问题解答
「在本地覆盖库的默认值」课时是免费的吗?
是的 — 「在本地覆盖库的默认值」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 DevOps Bootcamp 课程的其余内容,请升级到 CoddyKit PRO。 DevOps Bootcamp 课程共包含 4 节课。
「在本地覆盖库的默认值」这节课中我会学到什么?
为每个使用者自定义共享模板 你通过在浏览器中直接运行的动手代码来练习 DevOps Bootcamp,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 DevOps Bootcamp 需要有经验吗?
无需任何先前经验。CoddyKit 上的 DevOps Bootcamp 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「在本地覆盖库的默认值」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 DevOps Bootcamp 课中编写并运行代码吗?
能。每节 DevOps Bootcamp 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 声明库图表类型
- 导出可复用的命名模板
- 将库作为依赖使用
- 在本地覆盖库的默认值