0Pricing
DevOps Bootcamp · 课时

使用 define 定义局部模板

声明可复用的命名模板块

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

为什么要避免重复?

同样的标签和名称会被复制到 Chart 的每个清单中。使用命名模板可以只编写一次该代码块,然后在任何地方重复使用。

认识定义动作

您可以使用定义动作声明一个可复用的代码块。它会为一段模板文本命名,但不会自行渲染任何内容。

{{- define "mychart.labels" -}}
app: my-app
{{- end -}}

定义代码块的结构

每个定义都会以一个名称字符串开头,并以结束动作关闭。两者之间的内容就是调用方会插入的主体。

{{- define "NAME" -}}
  ...body...
{{- end -}}

命名约定很重要

名称在整个 Chart 中是全局的,因此请在名称前加上 Chart 名称,以避免冲突。点号形式的 chart.purpose 是常用约定。

{{- define "mychart.selectorLabels" -}}
app.kubernetes.io/name: mychart
{{- end -}}

部分模板存放在哪里

按照约定,所有定义代码块都放在 templates/_helpers.tpl 中。开头的下划线告诉 Helm,该文件不会自行生成清单。

下划线文件很特殊

templates 中以下划线开头的文件永远不会被渲染为 Kubernetes 对象。它们只存放供其他模板使用的部分模板和辅助函数。

定义不会产生输出

定义部分模板只会按名称注册它。除非另一个模板实际调用该部分模板,否则渲染后的 YAML 中不会出现任何内容。

部分模板可以使用点号

在部分模板中,您可以读取 .Release.Name 等上下文信息,但前提是调用方将相应的作用域传入其中。我们很快会讲解如何传递作用域。

{{- define "mychart.name" -}}
{{ .Release.Name }}
{{- end -}}

多个部分模板共用一个文件

您可以在 _helpers.tpl 中按需放置任意多个定义代码块。请将相关辅助函数归在一起,以便快速浏览该文件。

{{- define "mychart.name" -}}
my-app
{{- end -}}
{{- define "mychart.fullname" -}}
my-app-prod
{{- end -}}

部分模板构建更大的 Chart

随着 Chart 不断增长,部分模板可以让重复的标签和名称保持同步。只需修改一次辅助函数,所有使用它的清单就会一起更新。

定义只是工作的一半

单独的定义不会执行任何操作。下一步是使用包含或模板将它插入实际的清单中,下一课会介绍这一点。

快速检查

您添加了一个定义代码块,但渲染后的输出为空。这是为什么?

回顾:定义部分模板

您学会了使用定义声明可复用的代码块,为它们命名为 chart.purpose,并将其存放在 _helpers.tpl 中。接下来您将调用它们。🧩

常见问题解答

「使用 define 定义局部模板」课时是免费的吗?

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

「使用 define 定义局部模板」这节课中我会学到什么?

声明可复用的命名模板块 你通过在浏览器中直接运行的动手代码来练习 DevOps Bootcamp,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 DevOps Bootcamp 需要有经验吗?

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

「使用 define 定义局部模板」课时需要多长时间?

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

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

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

此课程中的所有课时

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