使用 template 与 include 插入局部模板
了解为什么 include 可以与 Pipeline 组合,而 template 不行
使用 template 与 include 插入局部模板 是 CoddyKit 上的免费 Helm Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Helm Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Helm Academy 课程共包含 4 节课。
调用部分模板
定义好的部分模板在被调用之前不会执行任何操作。Helm 为此提供了两个动作:模板和包含。
模板动作
模板动作会在当前位置渲染一个命名的部分模板。您需要传入部分模板的名称以及供其读取的作用域对象。
{{ template "mychart.labels" . }}模板动作为何受限
模板动作是一条语句,而不是一个表达式。它的输出会直接写入文档,无法通过管道传递给其他函数。
引入包含函数
Helm 添加了包含函数来弥补这一不足。它会渲染相同的部分模板,但会将结果作为字符串返回,供您继续转换。
{{ include "mychart.labels" . }}包含函数可与管道组合
由于包含函数会返回一个值,您可以将它通过管道传递给缩进或换行缩进函数。这就是 Chart 几乎总是优先使用包含函数的原因。
{{ include "mychart.labels" . | indent 4 }}真正的原因是缩进
插入的 YAML 必须处于正确的缩进层级。只有包含函数可以通过管道传递给换行缩进函数,因此它每次都能生成正确嵌套的输出。
metadata:
labels:
{{- include "mychart.labels" . | nindent 4 }}作用域参数
部分模板名称后面的点号就是您传给它的作用域。传入根点号后,部分模板就可以读取 .Values 和 .Release。
{{ include "mychart.fullname" . }}构建名称的辅助函数
这里的部分模板会返回一个名称,而 Deployment 使用包含函数将其放入元数据中。这样只需一个真实来源,就能供多个调用方使用。
metadata:
name: {{ include "mychart.fullname" . }}模板动作也有适用场景
您仍然会在实际项目中看到模板动作,通常用于那些会在自己的行中输出完整代码块、且不需要通过管道处理的部分模板。
{{ template "mychart.notes" . }}经验法则
如果输出需要缩进或进行任何后处理,请使用 include。只有在确实不需要这些操作时,才使用普通模板动作。
渲染以确认
运行 helm template .,检查局部模板是否按照预期缩进展开。YAML 对齐错误是这里最常见的问题。
helm template my-release .快速检查
您需要渲染一个局部模板,并将其缩进到 labels 键下。应该使用哪个动作?
回顾:template 与 include
两者都会调用局部模板,但 include 会返回可通过管道处理的字符串,而 template 只会进行内联输出。请优先将 include 与 nindent 搭配使用,以生成整洁的 YAML。✨
常见问题解答
「使用 template 与 include 插入局部模板」课时是免费的吗?
是的 — 「使用 template 与 include 插入局部模板」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Helm Academy 课程的其余内容,请升级到 CoddyKit PRO。 Helm Academy 课程共包含 4 节课。
「使用 template 与 include 插入局部模板」这节课中我会学到什么?
了解为什么 include 可以与 Pipeline 组合,而 template 不行 你通过在浏览器中直接运行的动手代码来练习 Helm Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Helm Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Helm Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。
「使用 template 与 include 插入局部模板」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Helm Academy 课中编写并运行代码吗?
能。每节 Helm Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 使用 define 定义局部模板
- 使用 template 与 include 插入局部模板
- 标准 Fullname 与 Labels 辅助函数
- 将作用域传入命名模板