【问题标题】:Gitlab Kubernetes CD automatic tag changeGitlab Kubernetes CD 自动标签更改
【发布时间】:2020-09-13 14:12:58
【问题描述】:

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

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

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

【问题讨论】:

    标签: kubernetes gitlab-ci kubernetes-helm kustomize


    【解决方案1】:

    您可以在使用--set 部署 helm 时传递 docker 映像标记值。因此,对于不同的分支 - 主分支和非主分支 - 在管道中您可以有不同的阶段,其中一个您将通过 --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 设置为最新,因此对于主步骤,您不需要指定它。

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

    【讨论】:

    • 我很欣赏这个建议,但我试图不必使用 set 在 ci/cd 管道中手动设置,因为它不是自动的。我希望它使用标签与分支名称匹配的图像(因为在分支中所做的任何更改都将在它们自己的单独容器中进行并标记为这样),如果不存在这样的标签,则默认为“最新”或特定默认值版本。我不想手动设置任何东西(即包括“设置”),因为这会有所不同,因为不同的分支可能会修改不同的微服务。
    猜你喜欢
    • 2021-11-29
    • 2021-09-06
    • 2018-11-19
    • 2021-08-17
    • 2018-10-03
    • 2021-04-15
    • 1970-01-01
    • 2021-10-14
    • 2021-10-14
    相关资源
    最近更新 更多