Helm 'if' 一行中的条件

Helm 'if' condition in one line

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

- name: ENV_VARIABLE
  value: {{- if .Values.condition }}"Value1"{{- else }}"Value2"{{- end }}

但是,我遇到了错误:

Error: YAML parse error on chart/templates/deployment.yaml: error converting YAML to JSON: yaml: line NN: could not find expected ':'

所以我得到了多行条件:

- name: ENV_VARIABLE
{{- if .Values.condition }}
  value: "Value1"
{{- else }}
  value: "Value2"
{{- end }}
  

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

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

您所做的工作有效,但您使用了前导连字符,removes all preceding whitespace

由于连字符,下面将呈现为 value:foo

value: {{- "foo" }}

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

也就是说,还有一个 ternary function 可以放在这里。

ternary

The ternary function takes two values, and a test value. If the test value is true, the first value will be returned. If the test value is empty, the second value will be returned. This is similar to the c ternary operator.

true test value

ternary "foo" "bar" true
or

true | ternary "foo" "bar"

- name: ENV_VARIABLE
  value: {{ .Values.condition | ternary "value1" "value2" | quote }}