我是头盔图表的新手。如果我在理解上出错了,请纠正我。我有一个服务,我试图使用头盔图表部署。我想根据部署环境更改配置映射名称及其键值。因此,我想在values.yaml中添加条件逻辑。
有人能指出我的一些文档/链接,解释如何在values.yaml中添加条件逻辑?
无论环境如何,图表的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
。
一种方法是使用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
找到系统的操作系统