本文介绍了HELM语法{{Something}}和{{-Something}}有什么不同?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试理解HELM模板,发现语法如下:
{{- if not .Values.autoscaling.enabled }}
replicas: {{ .Values.replicaCount }}
{{- end }}
所以我认为所有东西都必须以{{-
开头,但后来我发现其他语法没有这种语法:
- name: {{ .Chart.Name }}
所以我的问题是,这两个语法之间有什么区别?仪表板是做什么用的?什么时候需要?推荐答案
Helm模板语法基于GO编程语言的。
大括号{{
和}}
是进入和退出模板逻辑的左方括号和右方括号。
{{
语法和{{-
语法之间的区别在于,{{- something }}
将导致删除左侧的空格。否则,将包含任何额外的空格,这可能会导致YAML格式不正确。请参阅Helm文档,该文档详细介绍了此语法的工作原理并删除了额外的空格。
您将经常在控制结构中看到破折号,因为如果没有这个额外的空间,将会向YAML文件添加额外的空间,这可能会导致创建无效的语法。例如,
{{- if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}}
apiVersion: networking.k8s.io/v1beta1
{{- else -}}
apiVersion: extensions/v1beta1
{{- end }}
使属性apiVersion
输出(在YAML文件中),而不在属性前后添加空链接。
简单示例
"{{23 -}} < {{- 45}}"
"23<45"
这表明短划线语法会导致删除空格。
学习尝试使用Helm语法
学习如何试验Helm语法可能会很有用。我所做的是在模板目录中创建了一个名为my.yaml
的文件,并为该文件添加了我想要学习的语法。
例如,如果我在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 " | trim | quote }}
aTest5: Some
{{- "Thing Funky is" -}} goingOn
{{- " here"}}
drink2: {{ .Values.drink2 | default "coffee" | quote }}
然后运行如下所示的helm template
命令,并研究您获得的输出。
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"
前两个名称/值对expression1
和expression2
显示了使用和不使用短划线语法时的差异。
还请注意aTest5
的语法,该语法导致将多行合并为一行输出。
使用此方法将Helm语法摘要为一段大小的块,因此当您需要修复某些东西时,您可以理解您所看到的内容。
这篇关于HELM语法{{Something}}和{{-Something}}有什么不同?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!