我都可以使用
{{- range .Values.xxx }}
和
{{ range .Values.xxx }}
由我掌舵,结果是一样的。他们是完全一样的吗?连字符不是 有必要吗?
答案 0 :(得分:1)
连字符删除与模板结构相邻的所有空格。通常,这并不是严格必要的,但会使渲染的输出更具可读性。由于YAML有时对空格敏感,因此是必需的。
基本示例:
environment:
{{ range .Values.xxx }}
- { name: {{ . }}, value: "test" }
{{ end }}
渲染至:
environment:
- { name: a, value: "test" }
- { name: b, value: "test" }
在range
行上,在}}
之后和-
之前,有一个换行符和两个空格。这些才是有效的YAML。在两个{{
之前都有一个附加的换行符,这不是必需的,因此您可以使用{{-
来禁止它。
environment:
{{- range .Values.xxx }}
- { name: {{ . }}, value: "test" }
{{- end }}
environment:
- { name: a, value: "test" }
- { name: b, value: "test" }
这对于nindent
之类的包含其自己的换行符的功能也很有用。
items: {{- .Values.xxx | toYaml | nindent 2 }}
items:
- a
- b
toYaml
将列表[a, b]
转换为YAML字符串- a\n- b
; nindent 2
添加一个初始换行符,并在每行\n - a\n - b
的开头添加两个空格;然后-
会删除要发出的换行符之前的多余空间。
您也可以将-
放在结尾}}
内,具有相同的效果,但是这会占用下一行的缩进,因此它的用处会减少一些。
(请记住,helm template
会将图表呈现到stdout而不发送到Kubernetes API服务器,因此您可以看到这些内容将扩展为什么。)