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 注册表选择分布式存储( azuregcss3swiftoss ),则也可以将相同的存储用于辅助 Docker 注册表. 有关更多信息,请阅读部署注册表时的负载平衡注意事项 ,以及如何为 GitLab 的集成Container Registry设置存储驱动程序.

Replicating Docker Registry

您可以启用与存储无关的复制,以便将其用于云或本地存储. 每当将新映像推送到节点时,每个辅助节点都会将其拖到其自己的容器存储库中.

要配置 Docker Registry 复制:

  1. 配置节点 .
  2. 配置辅助节点 .
  3. 验证 Docker Registry 复制 .

Configure primary node

在执行下一步之前,请确保已设置 Container Registry 并在节点上工作.

我们需要使 Docker Registry 将通知事件发送到节点.

  1. SSH 到您的 GitLab 服务器并以 root 用户身份登录:

    1. sudo -i
  2. Edit /etc/gitlab/gitlab.rb:

    1. registry['notifications'] = [
    2. {
    3. 'name' => 'geo_event',
    4. 'url' => 'https://example.com/api/v4/container_registry_event/events',
    5. 'timeout' => '500ms',
    6. 'threshold' => 5,
    7. 'backoff' => '1s',
    8. 'headers' => {
    9. 'Authorization' => ['<replace_with_a_secret_token>']
    10. }
    11. }
    12. ]

    注意:<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 节点指定通知密钥.

  3. 重新配置节点以使更改生效:

    1. 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.

  1. SSH 进入辅助节点并以root用户身份登录:

    1. sudo -i
  2. /var/opt/gitlab/gitlab-rails/etc/gitlab-registry.key节点复制到辅助节点.

  3. Edit /etc/gitlab/gitlab.rb:

    1. gitlab_rails['geo_registry_replication_enabled'] = true
    2. 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
  4. 重新配置辅助节点以使更改生效:

    1. gitlab-ctl reconfigure

Verify replication

要验证 Container Registry 复制是否正常工作,请转到 管理区> 辅助节点上的地理位置/admin/geo/nodes ). 初始复制或”回填”可能仍在进行中. 您可以从浏览器中节点的” 地理节点”仪表板监视每个地理节点上的同步过程.