Helm 'if' 条件在一行中

Dan*_*lor 7 go-templates kubernetes-helm

我试图将if条件放在头盔模板的一行中:

- name: ENV_VARIABLE
  value: {{- if .Values.condition }}"Value1"{{- else }}"Value2"{{- end }}
Run Code Online (Sandbox Code Playgroud)

但是,我收到错误:

错误:chart/templates/deployment.yaml 上的 YAML 解析错误:将 YAML 转换为 JSON 时出错:yaml:行 NN:找不到预期的“:”

所以我最终得到了多行条件:

- name: ENV_VARIABLE
{{- if .Values.condition }}
  value: "Value1"
{{- else }}
  value: "Value2"
{{- end }}
  
Run Code Online (Sandbox Code Playgroud)

工作正常,但非常不紧凑。

有没有办法在 helm 中使用单行if条件?

The*_*ool 11

您所做的工作有效,但您使用前导连字符,这会删除所有前面的空格

下面将value:foo根据连字符进行渲染。

value: {{- "foo" }}
Run Code Online (Sandbox Code Playgroud)

如果删除连字符,它应该可以工作。

也就是说,还有适合这里的三元函数。

三元

三元函数采用两个值和一个测试值。如果测试值为真,则返回第一个值。如果测试值为空,则返回第二个值。这类似于 c 三元运算符。

真实测试值

ternary "foo" "bar" true
或者

true | ternary "foo" "bar"

value: {{- "foo" }}
Run Code Online (Sandbox Code Playgroud)