我的团队使用Helm在Gitlab中开发了kubernetes应用。作为审查过程的一部分,我们将应用程序实例部署到MR的名称空间中。构建Docker映像并将其标记为最新(对于当前的master稳定版)或标记为更改的分支。
我希望评论应用自动使用分支的最新版本(如果存在),否则使用最新版本,希望无需干预即可手动修改图像标签。
最干净的方法是什么?我看过很多地方
答案 0 :(得分:0)
使用--set
部署头盔时,您可以传递docker image标签值。因此,对于管道中的不同分支(主分支和非主分支),您可以有不同的阶段,其中一个阶段您将传递--set dockerImageTag=latest
,而对于MR分支,它将是--set dockerImageTag=<branch-name>
。
mr-build-deploy:
only:
- merge_requests
script:
- docker build ...
- docker tag <docker-tag-name>
- helm install --set dockerImageTag=<docker-tag-name> ...
...
master-build-deploy:
only:
- master
script:
- docker build ...
- docker tag latest
- helm install --set dockerImageTag=latest ...
...
或者在values.yaml
中为lem图,您可以将默认值dockerImageTag
设置为最新值,因此对于主步骤,您无需指定它。
说到最佳实践,建议不要使用最新标签,而要使用版本号(例如,以SemVer的形式),这样可以确保docker image中的哪些更改(如果发生)破坏了应用程序。