kubernetes - Helm 图表模板错误地评估表达式

标签 kubernetes kubernetes-helm

我根据一些标志的值在 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/

相关文章:

kubernetes - kubernetes默认网关未路由到本地网络

docker - 将本地 Docker 镜像 (DockerFIle) 部署为本地 Kubernetes pod

linux - 您能否以 root 身份在 Docker 容器内启动进程,同时让 exec 调用的默认用户为非 root 用户?

kubernetes - 如何从现有的 github 项目中添加 helm repo?

elasticsearch - 在 kubernetes 中修复 elasticsearch 损坏的集群

azure - 如何使用ansible和helm在azure kubernetes中部署微服务?

Kubernetes - PVC 未绑定(bind) NFS PV

kubernetes - 如何通过 Ansible 在 Pod 上使用 k8s 模块执行 shell 命令

kubernetes-helm - helm lint : INFO Chart. yaml:推荐使用图标

docker - GitLab Runner 使用 Helm Chart - 指向私有(private)仓库