0Pricing
Helm Academy · 课时

导出可复用的命名模板

发布其他图表可以引入的局部模板

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

命名模板就是核心内容

库型 Chart 通过命名模板提供功能。您可以使用 define 编写这些模板,就像在任何 _helpers.tpl 文件中编写一样。

{{- define "common.fullname" -}}
{{ .Release.Name }}-{{ .Chart.Name }}
{{- end -}}

为模板名称设置命名空间

模板名称在 Chart 及其依赖项中是全局的。请在名称前加上库名称,例如 common.labels,以避免冲突。

{{- define "common.labels" -}}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end -}}

将它们放入 templates

库模板位于 Chart 的 templates 目录中,并放在以下划线开头命名的文件里,这样 Helm 就不会将它们渲染为清单。

common/
  templates/
    _labels.tpl
    _names.tpl

define 本身不会产生输出

单独的 define 块在 Chart 渲染时不会产生任何内容。只有其他 Chart 稍后引入该模板时,它才会输出文本。

导出完整资源

您可以将整个 Kubernetes 对象定义为一个命名模板。使用方随后只需调用一次 include,就能渲染完整的 Service。

{{- define "common.service" -}}
apiVersion: v1
kind: Service
metadata:
  name: {{ .Release.Name }}
{{- end -}}

接受调用方的上下文

在局部模板中,点号就是调用方传入的任何内容。读取 .Values 和 .Release 可以让您的模板适应每个使用它的 Chart。

{{- define "common.image" -}}
{{ .Values.image.repository }}:{{ .Values.image.tag }}
{{- end -}}

记录所需的作用域

由于局部模板信任其输入,请留下注释,说明它们需要的上下文。传入错误点号的使用方会得到令人困惑的错误。

{{/* common.fullname expects the root context (.) */}}

每个模板只负责一个关注点

请将逻辑拆分为小而专注的局部模板:一个处理名称,一个处理标签,另一个处理选择器。小组件可以在许多 Chart 中轻松组合。

空白标记很重要

请使用类似 {{- 和 -}} 的短横线标记包住 define 和 end,避免库的输出向使用方的 YAML 中注入多余的空行。

{{- define "common.name" -}}
{{ .Chart.Name }}
{{- end -}}

只有被包含后才会导出

定义模板只会使它可用,不会使它自动生效。只有应用型 Chart 对其调用 include 或 template 时,它才会贡献输出。

一组小型可复用辅助模板

少量局部模板(例如 common.fullname 和 common.labels)就能成为每个团队 Chart 都可以建立在其上的共享词汇。

{{- define "common.fullname" -}}
{{ printf "%s-%s" .Release.Name .Chart.Name }}
{{- end -}}

快速检查

为什么库应该为模板名称添加前缀,例如使用 common.labels 而不是 labels?

回顾:导出模板

您已学会在以下划线开头的文件中使用 define 发布可复用逻辑,为名称设置命名空间,并信任调用方传入的点号作为上下文。🧩

常见问题解答

「导出可复用的命名模板」课时是免费的吗?

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

「导出可复用的命名模板」这节课中我会学到什么?

发布其他图表可以引入的局部模板 你通过在浏览器中直接运行的动手代码来练习 Helm Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Helm Academy 需要有经验吗?

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

「导出可复用的命名模板」课时需要多长时间?

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

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

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

此课程中的所有课时

  1. 声明库图表类型
  2. 导出可复用的命名模板
  3. 将库作为依赖使用
  4. 在本地覆盖库的默认值
← 返回 Helm Academy