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)