Helm 模板中的转义点

Escape dot in Helm template

values.yaml我有:

key1:
  key2.yaml:
    key3:
    - name
      value
    - name
      value

在模板中,如何到达 key3{{ .Values.key1.key2.yaml.key3 }} 不起作用,因为在此上下文中 key2.yaml 对应于

key1:
  key2:
    yaml:
      key3:
      ...

\ 转义 . 结果:

$ helm template .
Error: parse error at (...): bad character U+005C '\'

核心 Go text/template 语言包含一个 index 函数,它可以通过字符串键(或通过数字键的数组)在映射中查找任意项。键可以是任何有效的模板表达式,包括字符串文字。 index 可以采用多个参数进行嵌套查找。

因此,您可以使用 index 进行特定查找,例如:

{{ index .Values "key1" "key2.yaml" "key3" }}

如果该映射应该是文件及其内容的任意列表,模板 range 函数将 return 键和值,您不一定需要查找。

{{- range $filename, $contents := .Values.key1 }}
$filename: |-
{{ $contents | toYaml | indent 2 }}
{{ end -}}