You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Helm模板中自定义.引用(如.global/.name)的作用与定义方式

Helm模板中自定义.global/.name这类引用的机制与赋值方式

这些自定义的.global、.name并非Helm预定义变量,而是调用模板时手动传入的上下文对象字段。Helm模板基于Go模板实现,.始终代表当前模板的上下文对象——预定义的.Values、.Release是Helm默认注入到根上下文的字段,而.global、.name这类是用户在调用自定义模板时,主动传递的额外字段。

核心机制

用define定义的自定义模板本身不自带上下文,必须在通过include或template调用时,传入一个上下文对象(可以是任意结构的字典、结构体)。模板内部通过.访问这个传入对象的字段,就像你看到的.global、.name。

常见赋值/调用方式

1. 用dict构造上下文传入

在模板文件(比如templates/secret.yaml)中调用common.secret._header时,用Go模板的dict函数构造包含指定字段的对象:

{{- include "common.secret._header" (dict "global" . "name" "my-app-secret") }}
data:
  db-password: {{ .Values.db.password | b64enc }}

这里dict生成了一个包含两个键的字典:

  • global的值是根上下文.(即Helm默认的全局上下文,包含.Chart、.Release等预定义字段)
  • name的值是字符串my-app-secret,作为Secret的名称

2. 嵌套模板传递上下文

如果在另一个自定义模板中调用,直接传递已有的上下文对象即可:

{{- define "common.secret.complete" }}
{{- include "common.secret._header" . }} # 直接传递当前上下文,其中包含global和name字段
data:
  api-key: {{ .global.Values.api.key | b64enc }}
{{- end }}

# 调用外层模板时传入上下文
{{- include "common.secret.complete" (dict "global" . "name" "api-secret") }}

常见用途说明

  • .global一般用来传递Helm的根上下文,避免多层模板嵌套时丢失对.Chart、.Release等全局变量的访问;
  • .name这类字段是模板的动态参数,让同一个模板可以生成不同名称的资源,提升复用性。

内容的提问来源于stack exchange,提问作者94621

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 09:05:28