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 -}}
在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 -}}