动态设置配置映射名称和值以读取helm?

问题描述 投票:3回答:2

我是头盔图表的新手。如果我在理解上出错了,请纠正我。我有一个服务,我试图使用头盔图表部署。我想根据部署环境更改配置映射名称及其键值。因此,我想在values.yaml中添加条件逻辑。

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

kubernetes kubernetes-helm
2个回答
3
投票

无论环境如何,图表的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.<env>.yaml来覆盖默认值。对于您的测试环境,这可能如下所示:

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

当然,您也可以将values.<env>.yaml文件存储在图表目录之外。您只需要找到一种方法,使其在图表升级/安装时可用,以覆盖图表模板默认values.yaml


0
投票

一种方法是使用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找到系统的操作系统

© www.soinside.com 2019 - 2024. All rights reserved.