GitLab Dependency Proxy 功能详解与配置指南
什么是 Dependency Proxy
GitLab Dependency Proxy 是一个高效的依赖缓存服务,它允许开发团队缓存常用的上游依赖项(如容器镜像和软件包),从而显著提高构建速度和减少外部网络依赖。这个功能特别适合在企业内部环境中使用,可以避免重复下载相同的依赖项,节省带宽并提高构建效率。
功能特性
- 默认启用:安装后无需额外配置即可使用
- 多层级支持:支持容器镜像和软件包依赖的缓存
- 灵活配置:可以调整存储位置、使用对象存储等
- 安全认证:基于 JWT 的安全令牌机制
- 多部署支持:兼容各种 GitLab 部署方式(Linux 包、Helm Chart、源码编译)
基本配置
启用/禁用 Dependency Proxy
Dependency Proxy 默认是启用的,但管理员可以根据需要禁用它。
禁用方法(Linux 包安装)
- 编辑
/etc/gitlab/gitlab.rb
文件:gitlab_rails['dependency_proxy_enabled'] = false
- 重新配置 GitLab 使更改生效:
sudo gitlab-ctl reconfigure
重新启用
只需将上述配置中的 false
改为 true
或直接删除该行配置,然后重新配置 GitLab。
多节点部署注意事项
在多节点 GitLab 部署中,需要在每个 Web 和 Sidekiq 节点上执行相同的配置更改。
存储配置
修改本地存储路径
默认情况下,Dependency Proxy 文件存储在以下位置:
- Linux 包安装:
/var/opt/gitlab/gitlab-rails/shared/dependency_proxy/
- 源码安装:
shared/dependency_proxy/
(相对于 Git 主目录)
修改路径(Linux 包安装)
- 编辑
/etc/gitlab/gitlab.rb
:gitlab_rails['dependency_proxy_storage_path'] = "/mnt/dependency_proxy"
- 重新配置 GitLab
使用对象存储
对于大规模部署,建议使用对象存储替代本地存储。
配置对象存储(Linux 包安装)
- 编辑
/etc/gitlab/gitlab.rb
:gitlab_rails['dependency_proxy_object_store_enabled'] = true gitlab_rails['dependency_proxy_object_store_remote_directory'] = "dependency_proxy" gitlab_rails['dependency_proxy_object_store_connection'] = { 'provider' => 'AWS', 'region' => 'eu-west-1', 'aws_access_key_id' => 'YOUR_ACCESS_KEY', 'aws_secret_access_key' => 'YOUR_SECRET_KEY' }
- 重新配置 GitLab
迁移现有数据到对象存储
配置对象存储后,可以迁移现有数据:
sudo gitlab-rake "gitlab:dependency_proxy:migrate"
迁移完成后,可以通过 PostgreSQL 控制台验证迁移结果。
高级配置
调整 JWT 过期时间
Dependency Proxy 使用 JWT 令牌进行认证,默认过期时间为 15 分钟。可以通过 Rails 控制台调整:
# 将过期时间设置为30分钟
ApplicationSetting.update(container_registry_token_expire_delay: 30)
通过中间服务器访问
如果 GitLab 需要通过中间服务器访问外部资源:
- 编辑
/etc/gitlab/gitlab.rb
:gitlab_workhorse['env'] = { "http_proxy" => "http://USERNAME:PASSWORD@intermediate.example.com:8080", "https_proxy" => "http://USERNAME:PASSWORD@intermediate.example.com:8080" }
- 重新配置 GitLab
最佳实践
- 监控存储使用:定期检查 Dependency Proxy 存储使用情况,避免磁盘空间不足
- 网络优化:对于多地团队,考虑使用 CDN 或本地镜像加速访问
- 安全策略:定期审查和更新访问控制策略
- 清理策略:设置适当的缓存清理机制,避免存储过期依赖
通过合理配置 GitLab Dependency Proxy,企业可以显著提升 CI/CD 流水线的效率,减少对外部网络的依赖,同时提高构建过程的稳定性。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考