Docker Registry for a secondary node
Docker Registry for a secondary node
您可以在次要 Geo 节点上设置一个 ,以镜像主 Geo 节点上的Docker Registry .
Docker Registry 当前支持几种类型的存储. 如果您在主节点上为 Docker 注册表选择分布式存储( , gcs
, s3
, swift
或oss
),则也可以将相同的存储用于辅助 Docker 注册表. 有关更多信息,请阅读部署注册表时的 ,以及如何为 GitLab 的集成Container Registry设置存储驱动程序.
Replicating Docker Registry
您可以启用与存储无关的复制,以便将其用于云或本地存储. 每当将新映像推送到主节点时,每个辅助节点都会将其拖到其自己的容器存储库中.
要配置 Docker Registry 复制:
- 配置辅助节点 .
- 验证 Docker Registry .
在执行下一步之前,请确保已设置 Container Registry 并在主节点上工作.
SSH 到您的 GitLab 主服务器并以 root 用户身份登录:
Edit
/etc/gitlab/gitlab.rb
:registry['notifications'] = [
{
'name' => 'geo_event',
'url' => 'https://example.com/api/v4/container_registry_event/events',
'threshold' => 5,
'backoff' => '1s',
'Authorization' => ['<replace_with_a_secret_token>']
}
}
]
注意:将
<replace_with_a_secret_token>
替换为以字母开头的区分大小写的字母数字字符串. 您可以使用< /dev/urandom tr -dc _A-Zaz-0-9 | head -c 32 | sed "s/^[0-9]*//"; echo
生成一个< /dev/urandom tr -dc _A-Zaz-0-9 | head -c 32 | sed "s/^[0-9]*//"; echo
注意:如果使用外部注册表(而不是与 GitLab 集成的注册表),则必须将这些设置自己添加到其配置中. 在这种情况下,您还必须在/etc/gitlab/gitlab.rb
文件的registry.notification_secret
部分中指定通知密钥.注意:如果使用 GitLab HA,则还必须在/etc/gitlab/gitlab.rb
文件的registry.notification_secret
部分中为每个 Web 节点指定通知密钥.重新配置主节点以使更改生效:
Make sure you have Container Registry set up and working on the secondary node before following the next steps.
因为我们需要允许辅助节点与主节点容器注册表安全通信,所以我们需要为所有节点使用单个密钥对. 辅助节点将使用此密钥来生成短暂的 JWT,该 JWT 具有仅拉功能,可以访问主节点 Container Registry.
SSH 进入辅助节点并以
root
用户身份登录:sudo -i
将
/var/opt/gitlab/gitlab-rails/etc/gitlab-registry.key
从主节点复制到辅助节点.Edit
/etc/gitlab/gitlab.rb
:重新配置辅助节点以使更改生效: