{{< details >}}
- Tier: 基础版,专业版,旗舰版
- Offering: 私有化部署
{{< /details >}}
{{< history >}}
- 引入于极狐GitLab 11.11 中的专业版。
- 在极狐GitLab 13.6 中从专业版更改为基础版。
{{< /history >}}
极狐GitLab 可以作为您频繁访问的上游镜像的依赖代理使用。
这是管理文档。如果您想了解如何使用依赖代理,请参阅用户指南。
极狐GitLab 依赖代理:
- 默认开启。
- 可以由管理员关闭。
关闭依赖代理
依赖代理默认是启用的。如果您是管理员,您可以关闭依赖代理。要关闭依赖代理,请根据您的极狐GitLab 安装版本遵循相应的说明。
{{< tabs >}}
{{< tab title=”Linux package (Omnibus)” >}}
-
编辑
/etc/gitlab/gitlab.rb
并添加以下行:gitlab_rails['dependency_proxy_enabled'] = false
-
保存文件并重新配置极狐GitLab,以使更改生效。
{{< /tab >}}
{{< tab title=”Helm chart (Kubernetes)” >}}
安装完成后,更新全局 appConfig
以关闭依赖代理:
global:
appConfig:
dependencyProxy:
enabled: false
bucket: gitlab-dependency-proxy
connection:
secret:
key:
有关更多信息,请参阅使用 Globals 配置 Charts。
{{< /tab >}}
{{< tab title=”Self-compiled (source)” >}}
-
安装完成后,在
config/gitlab.yml
中配置dependency_proxy
部分。设置enabled
为false
以关闭依赖代理:dependency_proxy: enabled: false
-
重启极狐GitLab 以使更改生效。
{{< /tab >}}
{{< /tabs >}}
多节点极狐GitLab 安装
对于每个 Web 和 Sidekiq 节点,请遵循 Linux 软件包安装的步骤。
打开依赖代理
依赖代理默认是开启的,但可以由管理员关闭。要手动关闭它,请按照关闭依赖代理中的说明进行操作。
更改存储路径
默认情况下,依赖代理文件存储在本地,但您可以更改默认的本地位置,甚至使用对象存储。
更改本地存储路径
Linux 软件包安装的依赖代理文件存储在 /var/opt/gitlab/gitlab-rails/shared/dependency_proxy/
下,源码安装则相对于 Git 主目录存储在 shared/dependency_proxy/
下。
{{< tabs >}}
{{< tab title=”Linux package (Omnibus)” >}}
-
编辑
/etc/gitlab/gitlab.rb
并添加以下行:gitlab_rails['dependency_proxy_storage_path'] = "/mnt/dependency_proxy"
-
保存文件并重新配置极狐GitLab,以使更改生效。
{{< /tab >}}
{{< tab title=”Self-compiled (source)” >}}
-
编辑
config/gitlab.yml
中的dependency_proxy
部分:dependency_proxy: enabled: true storage_path: shared/dependency_proxy
-
重启极狐GitLab 以使更改生效。
{{< /tab >}}
{{< /tabs >}}
使用对象存储
您可以使用统一对象存储设置而不是依赖本地存储。此部分描述了早期的配置格式。迁移步骤仍然适用。
{{< tabs >}}
{{< tab title=”Linux package (Omnibus)” >}}
-
编辑
/etc/gitlab/gitlab.rb
并添加以下行(在必要时取消注释):gitlab_rails['dependency_proxy_enabled'] = true gitlab_rails['dependency_proxy_storage_path'] = "/var/opt/gitlab/gitlab-rails/shared/dependency_proxy" gitlab_rails['dependency_proxy_object_store_enabled'] = true gitlab_rails['dependency_proxy_object_store_remote_directory'] = "dependency_proxy" # 存储桶名称。 gitlab_rails['dependency_proxy_object_store_proxy_download'] = false # 通过极狐GitLab 而不是使用对象存储的重定向传输所有下载。 gitlab_rails['dependency_proxy_object_store_connection'] = { ## ## 如果提供者是 AWS S3,请取消以下注释 ## #'provider' => 'AWS', #'region' => 'eu-west-1', #'aws_access_key_id' => 'AWS_ACCESS_KEY_ID', #'aws_secret_access_key' => 'AWS_SECRET_ACCESS_KEY', ## ## 如果提供者不是 AWS(兼容 S3 的),请取消以下注释 ## #'host' => 's3.amazonaws.com', #'aws_signature_version' => 4 # 用于创建签名的 URL。如果提供者不支持 v4,请设置为 2。 #'endpoint' => 'https://s3.amazonaws.com' # 适用于 S3 兼容服务,例如 DigitalOcean Spaces。 #'path_style' => false # 如果为 true,使用 'host/bucket_name/object' 而不是 'bucket_name.host/object'。 }
-
保存文件并重新配置极狐GitLab,以使更改生效。
{{< /tab >}}
{{< tab title=”Self-compiled (source)” >}}
-
编辑
config/gitlab.yml
中的dependency_proxy
部分(在必要时取消注释):dependency_proxy: enabled: true ## ## 构建依赖代理的存储位置(默认:shared/dependency_proxy)。 ## # storage_path: shared/dependency_proxy object_store: enabled: false remote_directory: dependency_proxy # 存储桶名称。 # proxy_download: false # 通过极狐GitLab 而不是使用对象存储的重定向传输所有下载。 connection: ## ## 如果提供者是 AWS S3,请使用以下配置 ## provider: AWS region: us-east-1 aws_access_key_id: AWS_ACCESS_KEY_ID aws_secret_access_key: AWS_SECRET_ACCESS_KEY ## ## 如果提供者不是 AWS(兼容 S3 的),请注释掉前面的 4 行并使用以下配置: ## # host: 's3.amazonaws.com' # 默认:s3.amazonaws.com。 # aws_signature_version: 4 # 用于创建签名的 URL。如果提供者不支持 v4,请设置为 2。 # endpoint: 'https://s3.amazonaws.com' # 适用于 S3 兼容服务,例如 DigitalOcean Spaces。 # path_style: false # 如果为 true,使用 'host/bucket_name/object' 而不是 'bucket_name.host/object'。
-
重启极狐GitLab 以使更改生效。
{{< /tab >}}
{{< /tabs >}}
将本地依赖代理 blob 和清单迁移到对象存储
在配置对象存储之后,使用以下任务将现有依赖代理 blob 和清单从本地存储迁移到远程存储。处理在后台工作器中完成,不需要停机。
-
对于 Linux 软件包安装:
sudo gitlab-rake "gitlab:dependency_proxy:migrate"
-
对于源码安装:
RAILS_ENV=production sudo -u git -H bundle exec rake gitlab:dependency_proxy:migrate
您可以选择跟踪进度并验证所有依赖代理 blob 和清单是否成功迁移,使用PostgreSQL 控制台:
- 对于运行版本 14.1 及更早版本的 Linux 软件包安装,使用
sudo gitlab-rails dbconsole
。 - 对于运行版本 14.2 及更高版本的 Linux 软件包安装,使用
sudo gitlab-rails dbconsole --database main
。 - 对于源码实例,使用
sudo -u git -H psql -d gitlabhq_production
。
验证 objectstg
(其中 file_store = '2'
)拥有所有依赖代理 blob 和清单的计数,对于每个查询:
gitlabhq_production=# SELECT count(*) AS total, sum(case when file_store = '1' then 1 else 0 end) AS filesystem, sum(case when file_store = '2' then 1 else 0 end) AS objectstg FROM dependency_proxy_blobs;
total | filesystem | objectstg
------+------------+-----------
22 | 0 | 22
gitlabhq_production=# SELECT count(*) AS total, sum(case when file_store = '1' then 1 else 0 end) AS filesystem, sum(case when file_store = '2' then 1 else 0 end) AS objectstg FROM dependency_proxy_manifests;
total | filesystem | objectstg
------+------------+-----------
10 | 0 | 10
验证 dependency_proxy
文件夹中没有磁盘上的文件:
sudo find /var/opt/gitlab/gitlab-rails/shared/dependency_proxy -type f | grep -v tmp | wc -l
更改 JWT 过期时间
依赖代理遵循 Docker v2 令牌认证流程,向客户端发放用于拉取请求的 JWT。令牌过期时间是一个可配置的应用程序设置 container_registry_token_expire_delay
。可以从 rails 控制台更改:
# 将 JWT 过期时间更新为 30 分钟
ApplicationSetting.update(container_registry_token_expire_delay: 30)
默认过期时间和 JihuLab.com 上的过期时间是 15 分钟。
在代理后使用依赖代理
-
编辑
/etc/gitlab/gitlab.rb
并添加以下行:gitlab_workhorse['env'] = { "http_proxy" => "http://USERNAME:PASSWORD@example.com:8080", "https_proxy" => "http://USERNAME:PASSWORD@example.com:8080" }
-
保存文件并重新配置极狐GitLab,以使更改生效。