我正在尝试调试我的 Helm 图表之一,我注意到 app.kubernetes.io/version
标签是使用以下代码创建的(在 _helpers.tpl
) >):
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
但实际变量称为appVersion
。 version
和 name
也存在类似的不一致。它们的使用是使用PascalCase,但定义是使用camelCase。我尝试用谷歌搜索,但找不到任何相关信息。
Helm 变量真的不区分大小写吗?或者是否在幕后进行某种转换。
最佳答案
built-in objects 中的字段一般都是大写的。该文档还包括使用 {{ .Chart.Name }}-{{ .Chart.Version }}
的示例。尽管 .Chart
包含 chart.yaml
文件的内容,但其字段遵循此约定。
字段访问区分大小写,如果您引用.Chart.appVersion
,您应该会收到错误。
在实现级别,Go 模板 .
运算符可以导航 Go 对象树或 Go 映射。顶级对象是 a mix of maps and objects 。 .Values
是一个非结构化映射;发布可以在任何 YAML 布局中包含它想要的任何值。 .Release
原来也是一张 map ,但具有固定的已知键。
.Chart
是 chart.Metadata
object (不是直接解析的 YAML,而是它的对象形式)。它的字段对模板引擎可见。 Go 的规则是以大写字母开头的结构字段是可见的,并且大写字母会传回模板引擎。
关于kubernetes-helm - Helm 变量不区分大小写吗? (模板似乎是。),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67714954/