【问题标题】:Parameterize Helm values yaml file in a CI pipeline在 CI 管道中参数化 Helm 值 yaml 文件
【发布时间】:2020-12-11 19:36:48
【问题描述】:

我有两个项目:

项目 A - 包含我的微服务应用程序的源代码

项目 B - 使用 Helm 包含项目 A 的 Kubernetes 资源

这两个项目都驻留在各自独立的 git 存储库中。

项目 A 使用完整的 CI 管道构建,该管道构建带有标签版本的 Docker 映像并将其推送到 Docker 中心,然后通过来自 CI 服务器的 git push 将 Docker 映像的版本号写入项目 B。它通过使用它刚刚构建的 Docker 版本提交一个简单的 txt 文件来实现。

到目前为止一切顺利!我现在有项目 B,其中包含微服务项目 A 的这个 Docker 版本,我现在想将此值传递/注入到 Values.yaml 中,以便当我通过 Helm 打包项目 B 时,我有最新版本。

有什么想法可以实现吗?

【问题讨论】:

    标签: kubernetes continuous-integration yaml kubernetes-helm


    【解决方案1】:

    通过来自 CI 服务器的 git push。它通过使用它刚刚构建的 Docker 版本提交一个简单的 txt 文件来实现。

    我通常在这里做的是将值直接写入 yaml 中的正确字段。要在命令行上使用 yaml,我推荐使用 cli 工具 yq

    我通常使用完整的 Kubernetes Deployment manifest yaml,我通常使用这个 yq 命令更新图像字段:

    yq write --inplace deployment.yaml 'spec.template.spec.containers(name==myapp).image' <my-registry>/<my-image-repo>/<image-name>:<tag-name>
    

    然后将 yaml 文件提交到带有 yaml 清单的 repo。

    现在,您使用 Helm,但它仍然是 Yaml,因此您应该能够以类似的方式解决此问题。可能是这样的:

    yq write --inplace values.yaml 'app.image' <my-image>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-29
      • 1970-01-01
      • 2020-10-05
      • 1970-01-01
      • 2020-06-22
      • 1970-01-01
      • 2020-03-21
      • 2021-09-11
      相关资源
      最近更新 更多