如何在多个存储库中使用 Helm 模板?

How to use a Helm template in multiple repositories?

我有几个微服务在 YAML 中具有几乎相同的设置,一些值发生变化(例如图像、版本、特定的环境变量......),并且它们位于不同的存储库中,每个存储库都有不同的管道。如何在它们之间使用相同的模板而不重复代码?

我现在工作的地方就是这样做的。

我们有自己的通用 Helm 图表,该图表受版本控制并托管在我们的 Artifactory 中,该图表中可能需要更改的每个参数都在 values.yaml 中公开。

Artifactory 作为存储库添加到 helm 中,然后您只需要为每个要部署的微服务单独 values.yaml,因为图表是集中采购的。

helm install -f values.yaml microservice01 artifcatory/global-helm-chart

最重要的是我们使用 helmfile,但这不是实现您的目标所必需的。

重点是:

  • 使图表通用
  • 集中托管
  • 将存储库添加到 helm。

您还可以从管道更新 values.yaml,然后打包图表并部署它。这样您仍然可以拥有相同的 yaml 文件,但值将不同于它们部署的管道。

另一种简单的方法是在 helm chart 本身的不同环境中维护不同的 values.yaml 并在 helm install/upgrade 期间从管道传递它们。

我们为大约 90 个微服务这样做。我们有通用图表,我们通过 kindof sed 脚本 运行 值文件来更改我们需要的内容。然后部署整个包