为每个名称空间定义值

时间:2019-05-28 19:21:38

标签: kubernetes kubernetes-helm go-templates

values.yaml

replicas: {
  test: 1,
  stage: 2,
  prod: 3
}

在这里,我尝试使用Helm模板定义每个名称空间的副本数,但不确定正确的语法和模式:

deployment.yaml

replicas: {{ .Values.replicas.{{ .Release.Namespace }} }}

因此,如果将其部署到--namespace=prod,我希望模板返回:

# .Values.replicas.prod
replicas: 3

2 个答案:

答案 0 :(得分:1)

标准Go text/template库提供的所有模板功能均可用。特别是,它包含一个index函数,该函数可以在数组或映射对象中进行动态查找。

replicas: {{ index .Values.replicas .Release.Namespace }}

答案 1 :(得分:0)

我认为Helm不支持在变量中评估变量。为此,您需要对表达式进行两次评估。

您可以做的是编写以下代码:

{{ if eq .Release.Namespace "test" }}{{ .Values.replicas.test }}{{ end }}

然后,您还可以将该代码提取到您的_helpers.tpl中。然后用法应该清晰漂亮。