【问题标题】:Define values for each namespace为每个命名空间定义值
【发布时间】:2019-05-28 19:21:37
【问题描述】:

values.yaml

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

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

deployment.yaml

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

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

# .Values.replicas.prod
replicas: 3

【问题讨论】:

  • 你能举例说明你希望从模板中得到什么吗?
  • 看看 helmfile (github.com/roboll/helmfile),它为您提供了这种用例的完美解决方案

标签: kubernetes kubernetes-helm go-templates


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    我认为 Helm 不支持在变量中评估变量。为此,您的表达式需要被计算两次。

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-06-17
      • 1970-01-01
      • 2012-06-28
      • 2019-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多