0Pricing
Helm Academy · 课时

使用 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 反馈 — 无需本地设置。

此课程中的所有课时

  1. 使用 define 定义局部模板
  2. 使用 template 与 include 插入局部模板
  3. 标准 Fullname 与 Labels 辅助函数
  4. 将作用域传入命名模板
← 返回 Helm Academy