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