Kubernetes helm helm语法{{something}和{{something}之间有什么区别?

Kubernetes helm helm语法{{something}和{{something}之间有什么区别?,kubernetes-helm,Kubernetes Helm,我试图理解helm模板,并找到如下语法: {{- if not .Values.autoscaling.enabled }} replicas: {{ .Values.replicaCount }} {{- end }} 所以我认为每件事都必须从{-开始,但后来我发现了其他没有这种语法的语法: - name: {{ .Chart.Name }} 所以我的问题是这两个语法之间有什么区别?破折号做什么?什么时候需要它?Helm模板语法基于Go编程语言的语法。 大括号{

我试图理解helm模板,并找到如下语法:

  {{- if not .Values.autoscaling.enabled }}
  replicas: {{ .Values.replicaCount }}
  {{- end }}
所以我认为每件事都必须从
{-
开始,但后来我发现了其他没有这种语法的语法:

        - name: {{ .Chart.Name }}

所以我的问题是这两个语法之间有什么区别?破折号做什么?什么时候需要它?

Helm模板语法基于Go编程语言的语法。
大括号
{{
}
是进入和退出模板逻辑的开始和结束括号

舵手文件 讨论为什么在示例中需要此语法

YAML将意义归于空白,因此管理空白变得非常重要。[…]模板声明的大括号语法
{{
可以用特殊字符修改,以告知模板引擎选择空白。
{-
(添加破折号和空格)指示应向左选择空格,而
-}
表示应使用右侧的空格。小心!换行符是空格

因此答案是这样。
{{{
语法和
{-
语法之间的区别是
{{-something}
将删除左侧的空格。如果不这样做,将包含任何额外的空格,这可能导致格式错误的YAML。

请参阅Helm文档,其中详细介绍了该语法的工作原理并删除了额外的空格

您经常会在控件结构中看到破折号,因为如果没有这个额外的空间,将添加到YAML文件中,这可能会导致创建无效语法

{{- if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}}
apiVersion: networking.k8s.io/v1beta1
{{- else -}}
apiVersion: extensions/v1beta1
{{- end }}
使属性
apiVersion
输出(在YAML文件中),而不在属性前后添加空白链接

简单例子 围棋说

执行源为的模板时

然后运行如下所示的
helmtemplate
命令,并研究您得到的输出

helm template myproj ./mychart
. . . output trimmed . . .
# Source: mychart/templates/my.yaml
expression1: "23 < 45"
expression2: "23<45"

aTest0: ArgWithNoSpace
aTest1:      Arg with spaces on left and right
aTest2:      "    spaces-on-left-and-right    "
aTest3:      spaces-on-left-and-right
aTest4: "spaces-on-left-and-right"

aTest5: SomeThing Funky isgoingOn here
drink2: "coffee"

helm模板myproj./mychart
…输出已修剪。
#来源:mychart/templates/my.yaml
表达1:“23<45”
表情2:“23
"23<45"
expression1: "{{   23    }} < {{     45    }}"
expression2: "{{   23    -}} < {{-    45    }}"

aTest0: ArgWithNoSpace
aTest1:      Arg with spaces on left and right
aTest2:      "    spaces-on-left-and-right    "
aTest3: {{ "     spaces-on-left-and-right   " }}
aTest4: {{ "     spaces-on-left-and-right   " | trim | quote }}

aTest5: Some
{{- "Thing Funky is" -}} goingOn
     {{- " here"}}
drink2: {{ .Values.drink2 | default "coffee" | quote }}
helm template myproj ./mychart
. . . output trimmed . . .
# Source: mychart/templates/my.yaml
expression1: "23 < 45"
expression2: "23<45"

aTest0: ArgWithNoSpace
aTest1:      Arg with spaces on left and right
aTest2:      "    spaces-on-left-and-right    "
aTest3:      spaces-on-left-and-right
aTest4: "spaces-on-left-and-right"

aTest5: SomeThing Funky isgoingOn here
drink2: "coffee"