在 CI 管道中参数化 Helm 值 yaml 文件
Parameterize Helm values yaml file in a CI pipeline
我有两个项目:
Project A - Contains the Source code for my Microservice application
Project B - Contains the Kubernetes resources for Project A using Helm
这两个项目都位于各自独立的 git 存储库中。
项目 A 使用完整的 CI 管道构建,该管道构建带有标签版本的 Docker 图像并将其推送到 Docker 中心,然后写入版本号Docker 图像通过 git 从 CI 服务器推送到项目 B。它通过使用刚刚构建的 Docker 版本提交一个简单的 txt 文件来做到这一点。
到目前为止一切顺利!我现在有项目 B,其中包含微服务项目 A 的这个 Docker 版本,我现在想将这个值传递/注入到 Values.yaml 中,这样当我通过 Helm 打包项目 B 时,我有最新版本。
我有什么想法可以实现吗?
via a git push from the CI server. It does so by committing a simple txt file with the Docker version that it just built.
我通常在这里做的是,我直接将值写入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>
我有两个项目:
Project A - Contains the Source code for my Microservice application
Project B - Contains the Kubernetes resources for Project A using Helm
这两个项目都位于各自独立的 git 存储库中。
项目 A 使用完整的 CI 管道构建,该管道构建带有标签版本的 Docker 图像并将其推送到 Docker 中心,然后写入版本号Docker 图像通过 git 从 CI 服务器推送到项目 B。它通过使用刚刚构建的 Docker 版本提交一个简单的 txt 文件来做到这一点。
到目前为止一切顺利!我现在有项目 B,其中包含微服务项目 A 的这个 Docker 版本,我现在想将这个值传递/注入到 Values.yaml 中,这样当我通过 Helm 打包项目 B 时,我有最新版本。
我有什么想法可以实现吗?
via a git push from the CI server. It does so by committing a simple txt file with the Docker version that it just built.
我通常在这里做的是,我直接将值写入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>