我有几个在 YAML 中具有几乎相同设置的微服务,一些值发生了变化(例如图像、版本、特定环境变量......),它们位于不同的存储库中,每个都有不同的管道。如何在它们之间使用相同的模板而不重复代码?
问问题
731 次
3 回答
3
这就是我们在我目前工作的地方的做法。
我们有自己的通用 Helm 图表,该图表受版本控制并托管在我们的 Artifactory 中,该图表中可能需要更改的每个参数都暴露在 values.yaml 中。
Artifactory 作为存储库添加到 helm,然后您只需要为要部署的每个微服务单独一个 values.yaml,因为图表是集中获取的。
helm install -f values.yaml microservice01 artifcatory/global-helm-chart
最重要的是,我们使用 helmfile,但这不是实现您的目标所必需的。
关键点是:
- 使图表通用
- 集中托管
- 将存储库添加到 helm。
于 2020-09-03T13:48:11.330 回答
0
您还可以从管道更新 values.yaml,然后打包图表并部署它。这样您仍然可以拥有相同的 yaml 文件,但值将与它们部署的管道不同。
另一种简单的方法是在 helm 图表本身中为不同的环境维护不同的 values.yaml,并在 helm install/upgrade 从管道期间传递它们。
于 2020-09-03T19:32:19.540 回答
0
我们为大约 90 个微服务执行此操作。我们有共同的图表,我们通过 kindof sed 脚本运行值文件,这改变了我们需要的东西。然后整个包被部署
于 2021-01-31T23:40:55.123 回答