0

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

我希望评论应用程序自动使用最新的分支(如果存在),否则使用最新的,希望不需要干预来手动修改图像标签。

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

4

1 回答 1

1

您可以在使用--set. 因此,对于管道中的不同分支(主分支和非主分支),您可以有不同的阶段,您将在一个阶段通过--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.yamllem 图表中,您可以将默认值设置dockerImageTag为最新,因此对于主步骤,您不需要指定它。

说到最佳实践,不建议使用 latest 标签,而是使用版本号(例如SemVer的形式),这样您就可以确定 docker 映像中的哪些更改会破坏应用程序。

于 2020-09-13T17:52:08.033 回答