HELM语法{{Something}}和{{-Something}}有什么不同? [英] What is the difference between helm syntax {{ something }} and {{- something }}?

查看:9
本文介绍了HELM语法{{Something}}和{{-Something}}有什么不同?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试理解HELM模板,发现语法如下:

  {{- if not .Values.autoscaling.enabled }}
  replicas: {{ .Values.replicaCount }}
  {{- end }}

所以我认为所有东西都必须以{{-开头,但后来我发现其他语法没有这种语法:

        - name: {{ .Chart.Name }}
所以我的问题是,这两个语法之间有什么区别?仪表板是做什么用的?什么时候需要?

推荐答案

Helm模板语法基于GO编程语言的。
大括号{{}}是进入和退出模板逻辑的左方括号和右方括号。

https://helm.sh/docs/chart_template_guide/control_structures/上的Helm文档 讨论示例中需要此语法的原因。

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文件中),而不在属性前后添加空链接。

简单示例

GOtemplating documentation显示

执行来源为的模板时

"{{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"

前两个名称/值对expression1expression2显示了使用和不使用短划线语法时的差异。

还请注意aTest5的语法,该语法导致将多行合并为一行输出。

使用此方法将Helm语法摘要为一段大小的块,因此当您需要修复某些东西时,您可以理解您所看到的内容。

这篇关于HELM语法{{Something}}和{{-Something}}有什么不同?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆