【问题标题】:Helm template not rendering correct conditionHelm 模板未呈现正确的条件
【发布时间】:2020-10-29 17:54:02
【问题描述】:

我的掌舵图中必须有 2 个不同的值,它们的组合决定是否生成文件。这两个值是

cluster: test
networkpolicy: true

我需要根据 4 种不同的情况生成 NetworkPolicy。

Case          |  1   |   2   |  3   |  4 
--------------------------------------------
cluster       | test | test  | prod | prod
networkpolicy | true | false | true | false
--------------------------------------------
Outcome       | true | false | true | fail

上表显示了我想要的结果。这是我在_helpers.tpl 文件中的代码

{{- define "jenkins.networkpolicy" -}}
{{- if eq .Values.cluster "prod" -}}
  {{- if .Values.networkpolicy -}}
    {{- "true" -}}
  {{- else -}}
    {{- fail "Network policy cannot be disabled in prod" -}}
  {{- end -}}
{{- else -}}
  {{- if .Values.networkpolicy -}}
    {{- "true" -}}
  {{- else -}}
    {{- "false" -}}
  {{- end -}}
{{- end -}}

{{- end -}}

我在我的networkpolicy.yaml 文件中这样调用它

{{- if (include "jenkins.networkpolicy" .) }}
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
.
.
{{- end }}

以上代码适用于 4 种情况中的 3 种情况。案例#2 不起作用。它不应该模板化/忽略文件,但它仍然会生成它。知道我在这里缺少什么吗?

✗ helm template . -f ./values.yaml --set environment.id=test --set cluster=test --set networkpolicy=false | head -10
---
# Source: jkmaster-networkpolicy.yaml
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: test-jkmaster-networkpolicy
spec:
  podSelector:
    matchLabels:
      app: test-jkmaster # label of pod to isolate

【问题讨论】:

    标签: kubernetes-helm helmfile


    【解决方案1】:

    您的辅助函数返回一个非空字符串,其值为"true""false"

    if 语句被评估为假时查看docs

    如果值是,则管道被评估为 false:

    • 布尔假
    • 数字零
    • 一个空字符串
    • 零(空或空) 一个空集合(map、slice、tuple、dict、array)

    字符串"false" 被评估为布尔值true

    "false" 替换为空字符串"" 可使您的代码按预期工作

    {{- define "jenkins.networkpolicy" -}}
    {{- if eq .Values.cluster "prod" -}}
      {{- if .Values.networkpolicy -}}
        {{- "true" -}}
      {{- else -}}
        {{- fail "Network policy cannot be disabled in prod" -}}
      {{- end -}}
    {{- else -}}
      {{- if .Values.networkpolicy -}}
        {{- "true" -}}
      {{- else -}}
        {{- "" -}}
      {{- end -}}
    {{- end -}}
    
    {{- end -}}
    

    【讨论】:

      猜你喜欢
      • 2011-09-01
      • 2015-04-01
      • 2015-06-18
      • 1970-01-01
      • 1970-01-01
      • 2017-08-28
      • 2010-10-02
      • 2022-01-24
      • 2020-09-06
      相关资源
      最近更新 更多