495.md 4.9 KB
Newer Older
Lab机器人's avatar
readme  
Lab机器人 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
# Docker Registry for a secondary node

> 原文:[https://docs.gitlab.com/ee/administration/geo/replication/docker_registry.html](https://docs.gitlab.com/ee/administration/geo/replication/docker_registry.html)

*   [Storage support](#storage-support)
*   [Replicating Docker Registry](#replicating-docker-registry)
    *   [Configure **primary** node](#configure-primary-node)
    *   [Configure **secondary** node](#configure-secondary-node)
    *   [Verify replication](#verify-replication)

# Docker Registry for a secondary node[](#docker-registry-for-a-secondary-node-premium-only "Permalink")

您可以在**次要** Geo 节点上设置一个[Docker Registry](https://s0docs0docker0com.icopy.site/registry/) ,以镜像**主** Geo 节点上的[Docker Registry](https://s0docs0docker0com.icopy.site/registry/) .

## Storage support[](#storage-support "Permalink")

Docker Registry 当前支持几种类型的存储. 如果您在**主**节点上为 Docker 注册表选择分布式存储( `azure``gcs``s3``swift``oss` ),则也可以将相同的存储用于**辅助** Docker 注册表. 有关更多信息,请阅读部署注册表时的[负载平衡注意事项](https://s0docs0docker0com.icopy.site/registry/deploying/) ,以及如何为 GitLab 的集成[Container Registry](../../packages/container_registry.html#use-object-storage)设置存储驱动程序.

## Replicating Docker Registry[](#replicating-docker-registry "Permalink")

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

要配置 Docker Registry 复制:

1.  配置[**主**节点](#configure-primary-node) .
2.  配置[**辅助**节点](#configure-secondary-node) .
3.  验证 Docker Registry [复制](#verify-replication) .

### Configure **primary** node[](#configure-primary-node "Permalink")

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

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

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

    ```
    sudo -i 
    ```

2.  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 节点指定通知密钥.
3.  重新配置**主**节点以使更改生效:

    ```
    gitlab-ctl reconfigure 
    ```

### Configure **secondary** node[](#configure-secondary-node "Permalink")

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`用户身份登录:

    ```
    sudo -i 
    ```

2.`/var/opt/gitlab/gitlab-rails/etc/gitlab-registry.key`**主**节点复制到**辅助**节点.

3.  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 
    ```

4.  重新配置**辅助**节点以使更改生效:

    ```
    gitlab-ctl reconfigure 
    ```

### Verify replication[](#verify-replication "Permalink")

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