Gitlab Kubernetes CD自动标记更改

时间:2020-09-13 14:12:58

标签: kubernetes gitlab-ci kubernetes-helm kustomize

我的团队使用Helm在Gitlab中开发了kubernetes应用。作为审查过程的一部分,我们将应用程序实例部署到MR的名称空间中。构建Docker映像并将其标记为最新(对于当前的master稳定版)或标记为更改的分支。

我希望评论应用自动使用分支的最新版本(如果存在),否则使用最新版本,希望无需干预即可手动修改图像标签。

最干净的方法是什么?我看过很多地方

1 个答案:

答案 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中的哪些更改(如果发生)破坏了应用程序。