我们可以在 Helm yaml 文件中使用 OR 运算符吗

Can we use OR operator in Helm yaml files

我可以在 Helm yamls 中做这样的事情吗:

{{- if eq .Values.isCar true }} OR {{- if eq .Values.isBus true }}
# do something
{{- end }}

我知道我们可以做一个 if 检查。但是我将如何检查多个条件?是否有等同于 OR 和 AND 的运算符?

Helm documentation on operators所示:

For templates, the operators (eq, ne, lt, gt, and, or and so on) are all implemented as functions. In pipelines, operations can be grouped with parentheses ((, and )).

这意味着你可以使用

{{- if or (eq .Values.isCar true) (eq .Values.isBus true) }}

此外,如 if/else structure 中所述:

A pipeline is evaluated as false if the value is:

  • a boolean false
  • a numeric zero
  • an empty string
  • a nil (empty or null)
  • an empty collection (map, slice, tuple, dict, array)

Under all other conditions, the condition is true.

如果您的属性(isCarisBus)是布尔值,则可以跳过相等检查:

{{- if or .Values.isCar .Values.isBus }}

请注意,or 也可以用来代替 default,如下所示:

{{ or .Values.someSetting "dafault_value" }}

这将呈现为 .Values.someSetting(如果已设置)或 "dafault_value" 否则。