我们使用 helm 图表部署到 Kubernetes 并使用 helm 生成这些图表。不幸的是,我不熟悉 helm 或 helm 模板(并且只对 kubernetes 有一定的了解)所以在问下面的问题时我可能使用了不正确的术语(实际上我可能已经在本段中做过)所以请耐心等待我得到加快速度。
我有一个 helm 模板 foo.yaml,它类似于以下内容:
{{- define "env.variables" }}
echo "--- Setting env variables ---"
export foo={{ .Values.global_vars.foo }}
{{- end }}
apiVersion: v1
kind: Secret
type: Opaque
metadata:
name: "{{ .Values.global_vars.bar }}-set-env-vars"
data:
set-env-vars.sh: {{ include "env.variables" . | b64enc }}
如您所见,它定义了一个创建一些环境变量的脚本。我正在研究仅在某些条件为真时创建那些变量的要求(.Values.global_vars.baz == 1
)
我想我可以通过执行以下操作来实现这一点:
{{- define "env.variables" }}
if [ {{ .Values.global_vars.baz }} = 1 ]
then
echo "--- Setting env variables ---"
export foo={{ .Values.global_vars.foo }}
fi
{{- end }}
apiVersion: v1
kind: Secret
type: Opaque
metadata:
name: "{{ .Values.global_vars.bar }}-set-env-vars"
data:
set-env-vars.sh: {{ include "env.variables" . | b64enc }}
但这感觉不是一种非常优雅的方式。我可以将条件表达式放入data
仅包含满足条件的脚本中。像这样的东西:
{{- define "env.variables" }}
echo "--- Setting env variables ---"
export foo={{ .Values.global_vars.foo }}
{{- end }}
{{- define "no.env.variables" }}
echo "--- No env variables to set ---"
{{- end }}
apiVersion: v1
kind: Secret
type: Opaque
metadata:
name: "{{ .Values.global_vars.bar }}-set-env-vars"
data:
set-env-vars.sh: {{ if {{ .Values.global_vars.bar }} = 1 then include "env.variables" else include "no.env.variables" . | b64enc }}
希望这是有道理的。这实际上是我第一次去掌舵,所以我正在寻找一些菜鸟指导。