You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GitLab Auto DevOps中添加Helm Chart依赖?

GitLab Auto DevOps 添加额外服务依赖的标准方案

核心诉求

在使用GitLab Auto DevOps部署(含预览环境)应用时,无需完全替换官方默认Chart,仅需添加额外服务依赖(如特定数据库)并覆盖部分配置,避免复制完整默认Chart带来的冗余与同步维护成本。

可选方案分析与推荐

1. 复制完整默认Chart并修改

  • 问题:这种方式冗余度极高,每次官方默认Chart更新时都需要手动同步,长期维护成本大,不推荐使用。

2. 覆盖部署CI流水线任务,合并默认Chart与自定义依赖

这是贴近官方扩展逻辑的可行方案,通过自定义CI作业下载官方默认Chart,再合并自身的依赖配置:

  • 实现步骤:
    1. 在项目根目录创建./chart文件夹,仅存放需要修改的文件(如requirements.yaml、自定义values-override.yaml)
    2. 在.gitlab-ci.yml中覆盖auto-deploy作业,完成默认Chart下载与自定义内容合并
  • 示例代码:
    auto-deploy:
      extends: .auto-deploy
      script:
        # 下载最新官方默认Auto DevOps Chart
        - mkdir -p tmp/auto-deploy-app
        - wget -qO- https://gitlab.com/gitlab-org/cluster-integration/auto-deploy-image/-/archive/master/auto-deploy-image-master.tar.gz | tar xz --strip-components=2 auto-deploy-image-master/assets/auto-deploy-app -C tmp/auto-deploy-app
        # 复制自定义依赖与配置到默认Chart目录
        - cp -f ./chart/requirements.yaml tmp/auto-deploy-app/ || true
        - cp -f ./chart/values-override.yaml tmp/auto-deploy-app/ || true
        # 构建Chart依赖
        - helm dependency build tmp/auto-deploy-app
        # 执行部署,合并默认与自定义配置
        - helm upgrade --install $CI_ENVIRONMENT_SLUG tmp/auto-deploy-app 
            --namespace $KUBE_NAMESPACE 
            --values tmp/auto-deploy-app/values.yaml 
            --values tmp/auto-deploy-app/values-override.yaml 
            $HELM_UPGRADE_FLAGS
    
  • 优势:仅维护需要自定义的部分,自动同步官方Chart的更新;劣势:需要对GitLab CI与Helm有基础了解,自定义作业需适配Auto DevOps的环境变量。

3. 类似自定义Helm Chart values的方式

官方提供的自定义values方式仅能覆盖配置参数,无法添加Chart依赖——因为依赖是Chart本身的定义(requirements.yaml或Chart.yaml的dependencies字段),不属于values配置范畴,因此这种方式无法满足添加额外服务的需求。

4. 添加独立CI任务部署额外服务

这是简单易维护的方案,将额外服务的部署与应用部署拆分为独立CI作业:

  • 实现步骤:
    1. 在.gitlab-ci.yml中新增部署额外服务的作业,直接使用Helm部署对应的公开Chart
    2. 根据应用与服务的依赖关系,配置作业执行顺序
  • 示例代码:
    deploy-database:
      stage: deploy
      image: alpine/helm:latest
      script:
        - helm repo add bitnami https://charts.bitnami.com/bitnami
        - helm upgrade --install app-db bitnami/postgresql 
            --namespace $KUBE_NAMESPACE 
            --set auth.password=my-secret-pass
      only:
        - branches
      environment:
        name: $CI_ENVIRONMENT_NAME
    
    auto-deploy:
      extends: .auto-deploy
      needs: [deploy-database] # 若应用依赖数据库,添加此配置确保先部署数据库
    
  • 优势:无需修改官方Auto DevOps逻辑,独立管理额外服务的部署配置;劣势:需单独维护每个服务的部署参数,需手动保证应用与服务的环境一致性(如命名空间、连接参数传递)。

推荐方案

  • 若需将额外服务与应用Chart统一管理,优先选择方案2;
  • 若额外服务独立于应用部署逻辑,或需要更灵活的部署控制,优先选择方案4;
  • 额外提示:可先检查官方默认Chart的values.yaml,部分常用服务(如PostgreSQL、Redis)已内置子Chart支持,只需通过自定义values启用即可,无需额外添加依赖。

内容的提问来源于stack exchange,提问作者knittl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 03:40:16