{{-range .Values.xxx}}和{{range .Values.xxx}}掌舵之间有什么区别

时间:2020-03-30 07:46:55

标签: kubernetes-helm

我都可以使用

{{- range .Values.xxx }}

{{ range .Values.xxx }}

由我掌舵,结果是一样的。他们是完全一样的吗?连字符不是 有必要吗?

1 个答案:

答案 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- bnindent 2添加一个初始换行符,并在每行\n - a\n - b的开头添加两个空格;然后-会删除要发出的换行符之前的多余空间。

您也可以将-放在结尾}}内,具有相同的效果,但是这会占用下一行的缩进,因此它的用处会减少一些。

(请记住,helm template会将图表呈现到stdout而不发送到Kubernetes API服务器,因此您可以看到这些内容将扩展为什么。)

相关问题