【问题标题】:Dynamically set the config map name and values to read in helm?动态设置配置映射名称和值以在 helm 中读取?
【发布时间】:2017-12-04 11:41:20
【问题描述】:

我是掌舵图表的新手。因此,如果我理解错误,请纠正我。我有一项服务,我正在尝试使用 helm 图表进行部署。我想根据部署环境更改配置映射名称及其要读取的键值。因此我想在 values.yaml 中添加条件逻辑。

有人能指出一些解释如何在 values.yaml 中添加条件逻辑的文档/链接吗?

【问题讨论】:

  • 查看有关control structures的自述文件
  • (你不能在values.yaml中应用这些结构)

标签: kubernetes kubernetes-helm


【解决方案1】:

一种方法是使用 helm install 传递一个值,例如:

--set environment=<value>

然后在您的值文件中为不同的环境设置多组值,例如:

environment: <default>
env1:
  prop1: <value1>
  prop2: <value2>
env2:
  prop1: <value1>
  prop2: <value2>

现在在你的 configMap 文件中像这样使用它:

{{- if eq .Values.environment "env1" }}
  somekey: {{ .Values.env1.prop1 }}
{{- else }}
  somekey: {{ .Values.env2.prop1 }}
{{- end }}

这应该可以根据环境或任何此类条件设置动态值。

除此之外,还有一件事我想提醒您注意,helm 没有更多的内置对象,就像.Values,其中之一是.Capabilities,所以您可以使用.Capabilities.KubeVersion.Platform查找系统的操作系统

【讨论】:

    【解决方案2】:

    图表的values.yaml 主要用于设置默认值,与环境无关。它的存在是为了用值填充图表模板。它本身并非设计为模板,因此您无法在 values.yaml 文件中应用任何逻辑。

    每个环境都应该有自己的values.yaml 文件。您可以将它们存储在图表本身中,例如:

    .
    ├── Chart.yaml
    ├── README
    ├── templates
    │   ├── config.yaml
    │   ├── deployment.app.yaml
    │   └── service.app.yaml
    ├── values.prod.yaml
    ├── values.test.yaml
    └── values.yaml
    

    现在,当您部署图表时,您可以使用特定于环境的values.&lt;env&gt;.yaml 来覆盖默认值。对于您的测试环境,这可能如下所示:

    helm upgrade --install my-chart path/to/my/chart --values path/to/my/chart/values.test.yaml
    

    当然,您也可以将values.&lt;env&gt;.yaml 文件存储在图表目录之外。您只需要找到一种方法让它们在图表升级/安装时可用,以覆盖图表模板默认的values.yaml

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-08
      • 1970-01-01
      • 2021-01-24
      • 2012-08-02
      • 2020-01-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多