kubernetes-helm - Helm 变量不区分大小写吗? (模板似乎是。)

标签 kubernetes-helm

我正在尝试调试我的 Helm 图表之一,我注意到 app.kubernetes.io/version 标签是使用以下代码创建的(在 _helpers.tpl) >):

{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}

但实际变量称为appVersionversionname 也存在类似的不一致。它们的使用是使用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 ,但具有固定的已知键。

.Chartchart.Metadata object (不是直接解析的 YAML,而是它的对象形式)。它的字段对模板引擎可见。 Go 的规则是以大写字母开头的结构字段是可见的,并且大写字母会传回模板引擎。

关于kubernetes-helm - Helm 变量不区分大小写吗? (模板似乎是。),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67714954/

相关文章:

kubernetes - Helm - values.yaml 中的模板变量

kubernetes - 覆盖子图中的引用文件(在 .Files 中)或从主图中插入 mariadb 初始文件

kubernetes - Helm 测试失败 : timed out waiting for the condition

kubernetes - 如何在没有Tiller和Helm 2的情况下使用 'helm test'

kubernetes - ".network.genesisProfile"的未知命令 "yq"

kubernetes - 获取正在运行的 helm 版本的当前配置?

airflow - 实现集成时,Datadog 找不到 "catalog"中的检查

go - Helm/Kube 错误 : query: failed to query with labels: stream error

if-statement - Helm chart 中的 if 子句

docker - 如何在应用容器启动之前将插件安装到应用的文件系统?