问题描述
我有几种微服务,它们在YAML中的设置几乎相同,有些值会发生变化(例如,图像,版本,特定的环境变量...),它们位于不同的存储库中,每个存储库具有不同的管道。如何在它们之间使用相同的模板而又不会得到重复的代码?
解决方法
这就是我们在目前工作的地方所做的事情。
我们有自己的通用Helm图表,由版本控制并托管在Artifactory中,该图表中可能需要更改的每个参数都在values.yaml中公开。
Artifactory作为存储库添加到掌舵中,因此,当图表集中来源时,您只需要为要部署的每个微服务分别设置一个values.yaml。
helm install -f values.yaml microservice01 artifcatory/global-helm-chart
最重要的是,我们使用helmfile,但这对于实现您的目标不是必需的。
关键点是:
- 使图表通用
- 集中托管
- 将存储库添加到掌舵中。
您还可以从管道中更新values.yaml,然后打包图表并将其部署。这样,您仍然可以拥有相同的yaml文件,但是值将与部署它们的管道不同。
另一种简单的方法是在头盔图表本身中针对不同的环境维护不同的value.yaml,并在从管道进行头盔安装/升级期间传递它们。
,我们为大约 90 个微服务做这件事。我们有共同的图表,我们通过一种改变我们需要的 sed 脚本运行值文件。然后整个包被部署