为每个命名空间定义值
Define values for each namespace
values.yaml
replicas: {
test: 1,
stage: 2,
prod: 3
}
我在这里尝试使用 Helm 模板来定义每个命名空间的副本数,但我不确定正确的语法和模式:
deployment.yaml
replicas: {{ .Values.replicas.{{ .Release.Namespace }} }}
因此,如果将其部署到 --namespace=prod
,我希望模板为 return:
# .Values.replicas.prod
replicas: 3
我认为 Helm 不支持在变量中评估变量。为此,您的表达式需要计算两次。
您可以编写以下代码:
{{ if eq .Release.Namespace "test" }}{{ .Values.replicas.test }}{{ end }}
然后您还可以将该代码提取到您的 _helpers.tpl
。那么用法应该是清晰漂亮的。
标准 Go text/template 库提供的所有模板函数都可用。特别是,它包括一个 index
函数,可以在数组或映射对象中进行动态查找。
replicas: {{ index .Values.replicas .Release.Namespace }}
values.yaml
replicas: {
test: 1,
stage: 2,
prod: 3
}
我在这里尝试使用 Helm 模板来定义每个命名空间的副本数,但我不确定正确的语法和模式:
deployment.yaml
replicas: {{ .Values.replicas.{{ .Release.Namespace }} }}
因此,如果将其部署到 --namespace=prod
,我希望模板为 return:
# .Values.replicas.prod
replicas: 3
我认为 Helm 不支持在变量中评估变量。为此,您的表达式需要计算两次。
您可以编写以下代码:
{{ if eq .Release.Namespace "test" }}{{ .Values.replicas.test }}{{ end }}
然后您还可以将该代码提取到您的 _helpers.tpl
。那么用法应该是清晰漂亮的。
标准 Go text/template 库提供的所有模板函数都可用。特别是,它包括一个 index
函数,可以在数组或映射对象中进行动态查找。
replicas: {{ index .Values.replicas .Release.Namespace }}