舵图模板错误地评估表达式

时间:2018-02-14 12:28:54

标签: kubernetes kubernetes-helm

我在configmap中根据一些标志设置了一些属性'值。为了达到这个目的,我正在使用" if / else"我的configmap.yaml中的条件。但是这些"如果"条件工作正常如果内部只有一个表达式"如果"阻止,但多次表达棍棒与"或"和"和"正在评估错误。

configmap.yaml:

{{- else if (eq .Values.A "oracle") and (eq .Values.B "true") or (eq .Values.A "postgresql") }}

上述条件被评估为false但是它应该被评估为true,因为最后一个条件为真。

MYPROP1 = {{ (eq .Values.A"oracle") and (eq .Values.B "true") or (eq .Values.databaseType "postgresql") }} ==>printing false
    MYPROP2 = {{ (eq .Values.A"oracle") and (eq .Values.B "true") }} ==>printing false
    MYPROP3 = {{ (eq .Values.A"postgresql") }} ===> printing true

1 个答案:

答案 0 :(得分:2)

表达式从左到右进行评估,并在and运算符被评估为false时立即退出。永远不会评估or表达式。

使用括号时,您可以实现预期的行为:

((eq .Values.A "oracle") and (eq .Values.B "true")) or (eq .Values.A "postgresql")