如何在GitLab Auto DevOps中添加Helm Chart依赖?
GitLab Auto DevOps 添加额外服务依赖的标准方案
核心诉求
在使用GitLab Auto DevOps部署(含预览环境)应用时,无需完全替换官方默认Chart,仅需添加额外服务依赖(如特定数据库)并覆盖部分配置,避免复制完整默认Chart带来的冗余与同步维护成本。
可选方案分析与推荐
1. 复制完整默认Chart并修改
- 问题:这种方式冗余度极高,每次官方默认Chart更新时都需要手动同步,长期维护成本大,不推荐使用。
2. 覆盖部署CI流水线任务,合并默认Chart与自定义依赖
这是贴近官方扩展逻辑的可行方案,通过自定义CI作业下载官方默认Chart,再合并自身的依赖配置:
- 实现步骤:
- 在项目根目录创建
./chart文件夹,仅存放需要修改的文件(如requirements.yaml、自定义values-override.yaml) - 在
.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作业:
- 实现步骤:
- 在
.gitlab-ci.yml中新增部署额外服务的作业,直接使用Helm部署对应的公开Chart - 根据应用与服务的依赖关系,配置作业执行顺序
- 在
- 示例代码:
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
相关产品推荐
相关产品推荐

