我有2个项目:
- 项目A - 包含我的微服务应用程序的源代码
- 项目B - 包含使用
Helm
的项目A
的Kubernetes。
两个项目都驻扎在各自独立的git仓库中。
项目A使用一个完整的CI管道进行构建,构建一个带有标签版本的Docker镜像并将其推送到Docker中心,然后通过CI服务器的git推送将Docker镜像的版本号写入项目B。它是通过提交一个简单的txt文件来实现的,其中包含了它刚刚构建的Docker版本。
到目前为止,一切正常。我现在有了包含微服务项目A的Docker版本的项目B,我现在想把这个值传递/注入到Values.yaml
中,这样当我通过Helm打包项目B时,我就有了最新的版本。
有什么办法可以让我实现这个功能吗?
我通常在这里做的是,直接把值写到yaml的正确字段中。要在命令行上使用yaml,我推荐使用cli工具
yq
。我通常使用完整的Kubernetes部署清单yaml,我通常用这个yq命令更新
image
字段。yq write --inplace deployment.yaml 'spec.template.spec.containers(name==myapp).image' <my-registry>/<my-image-repo>/<image-name>:<tag-name> and after that commit the yaml file to the repo with yaml manifests.
现在,你使用了Helm,但它仍然是Yaml,所以你应该可以用类似的方法来解决这个问题。也许像这样
yq write --inplace values.yaml 'app.image' <my-image>
你的答案