Docker Registry for a secondary node
原文:https://docs.gitlab.com/ee/administration/geo/replication/docker_registry.html
Docker Registry for a secondary node
您可以在次要 Geo 节点上设置一个Docker Registry ,以镜像主 Geo 节点上的Docker Registry .
Storage support
Docker Registry 当前支持几种类型的存储. 如果您在主节点上为 Docker 注册表选择分布式存储( azure
, gcs
, s3
, swift
或oss
),则也可以将相同的存储用于辅助 Docker 注册表. 有关更多信息,请阅读部署注册表时的负载平衡注意事项 ,以及如何为 GitLab 的集成Container Registry设置存储驱动程序.
Replicating Docker Registry
您可以启用与存储无关的复制,以便将其用于云或本地存储. 每当将新映像推送到主节点时,每个辅助节点都会将其拖到其自己的容器存储库中.
要配置 Docker Registry 复制:
Configure primary node
在执行下一步之前,请确保已设置 Container Registry 并在主节点上工作.
我们需要使 Docker Registry 将通知事件发送到主节点.
SSH 到您的 GitLab 主服务器并以 root 用户身份登录:
sudo -i
Edit
/etc/gitlab/gitlab.rb
:registry['notifications'] = [
{
'name' => 'geo_event',
'url' => 'https://example.com/api/v4/container_registry_event/events',
'timeout' => '500ms',
'threshold' => 5,
'backoff' => '1s',
'headers' => {
'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
< /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 节点指定通知密钥.重新配置主节点以使更改生效:
gitlab-ctl reconfigure
Configure secondary node
Make sure you have Container Registry set up and working on the secondary node before following the next steps.
在希望看到复制的 Docker 映像的每个辅助节点上,应执行以下步骤.
因为我们需要允许辅助节点与主节点容器注册表安全通信,所以我们需要为所有节点使用单个密钥对. 辅助节点将使用此密钥来生成短暂的 JWT,该 JWT 具有仅拉功能,可以访问主节点 Container Registry.
SSH 进入辅助节点并以
root
用户身份登录:sudo -i
将
/var/opt/gitlab/gitlab-rails/etc/gitlab-registry.key
从主节点复制到辅助节点.Edit
/etc/gitlab/gitlab.rb
:gitlab_rails['geo_registry_replication_enabled'] = true
gitlab_rails['geo_registry_replication_primary_api_url'] = 'https://primary.example.com:5050/' # Primary registry address, it will be used by the secondary node to directly communicate to primary registry
重新配置辅助节点以使更改生效:
gitlab-ctl reconfigure
Verify replication
要验证 Container Registry 复制是否正常工作,请转到 管理区> 辅助节点上的地理位置 ( /admin/geo/nodes
). 初始复制或”回填”可能仍在进行中. 您可以从浏览器中主节点的” 地理节点”仪表板监视每个地理节点上的同步过程.