我根据一些标志的值在 configmap 中设置一些属性。为了实现这一点,我在 configmap.yaml 中使用“if/else”条件。但是,如果“if” block 内只有一个表达式,但对于用“or”和“and”组合的多个表达式,则计算不正确,这些“if”条件工作正常。
configmap.yaml:
{{- else if (eq .Values.A "oracle") and (eq .Values.B "true") or (eq .Values.A "postgresql") }}
上述条件被评估为 false,但它应该被评估为 true,因为最后一个条件为 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
最佳答案
表达式从左到右计算,并且一旦 and
运算符计算为 false
就会退出。 or
表达式永远不会被计算。
使用括号时可以实现预期的行为:
((eq .Values.A "oracle") and (eq .Values.B "true")) or (eq .Values.A "postgresql")
关于kubernetes - Helm 图表模板错误地评估表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48787251/