我的掌舵图中必须有 2 个不同的值,它们的组合决定是否生成文件。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