在 CI 管道中参数化 Helm 值 yaml 文件

问题描述 投票:0回答:2

我有两个项目:

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

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

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

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

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

我有什么想法可以实现这个吗?

kubernetes continuous-integration yaml kubernetes-helm
2个回答
3
投票

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

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

我通常使用完整的 Kubernetes

Deployment
清单 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 文件提交到存储库。

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

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

0
投票

我正在尝试进行与您相同的活动。你能帮我看看你是怎么做到的吗?

我也想了解B项目中的docker镜像版本是如何进行git推送更新的?

© www.soinside.com 2019 - 2024. All rights reserved.