我是掌舵图的新手。如果我在理解上出错了,请纠正我。我有一个服务,我试图使用头盔图表部署。我想根据部署环境更改配置映射名称及其键值。因此,我想在values.yaml中添加条件逻辑。
有人能指点我一些文档/链接,解释如何在values.yaml中添加条件逻辑吗?
答案 0 :(得分: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
。
答案 1 :(得分:0)
一种实现方法是通过头盔安装传递一个值,例如:
--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 }}
应该可以根据环境或任何此类条件设置动态值。
此外,我想提醒您的另一件事是,掌舵像.Values
一样很少有内置对象,其中之一是.Capabilities
,因此您可以利用.Capabilities.KubeVersion.Platform
中找到系统的操作系统