文档首页/ 容器镜像服务 SWR/ 最佳实践/ 容器镜像迁移/ 跨云Harbor同步镜像至华为云SWR
更新时间:2023-12-29 GMT+08:00

跨云Harbor同步镜像至华为云SWR

场景描述

部分客户存在多云场景,并且使用某一家云上的自建Harbor作为镜像仓库。跨云Harbor同步镜像至SWR存在两种场景:

  1. Harbor可以通过公网访问SWR,配置方法参见公网访问场景
  2. 通过专线打通Harbor到VPC间的网络,使用VPC终端节点访问SWR,配置方法参见专线打通场景

背景知识

Harbor是VMware公司开源的企业级Docker Registry管理项目,在开源Docker Distribution能力基础上扩展了例如权限管理(RBAC)、镜像安全扫描、镜像复制等功能。Harbor目前已成为自建容器镜像托管及分发服务的首选。

公网访问场景

  1. Harbor上配置镜像仓库。

    Harbor在1.10.5以上版本,集成了华为云的SWR对接,只需要在目标(ENDPOINT)上选择就可以。本文以Harbor 2.4.1为例。

    1. 新建目标。

    2. 填写如下参数。

      • 提供者:必须选“Huawei SWR”。
      • 目标名:自定义。
      • 目标URL:使用SWR的公网域名,格式为https://{SWR镜像仓库地址}。镜像仓库地址获取方法:登录容器镜像服务控制台,进入“我的镜像”,单击“客户端上传”,在弹出的页面即可查看SWR当前Region的镜像仓库地址。

      • 访问ID:遵循SWR的长期有效的认证凭证规则,以“区域项目名称@[AK]”形式填写。
      • 访问密码:遵循SWR的长期有效的认证凭证规则,需要用AK和SK来生成,详细说明请参考获取长期有效登录指令
      • 验证远程证书:建议取消勾选

  2. 配置同步规则。

    1. 新建规则

    2. 填写如下参数。

      • 名称:自定义。
      • 复制模式:选择“Push-based”,表示把镜像由本地Harbor推送到远端仓库。
      • 源资源过滤器:根据填写的规则过滤Harbor上的镜像。
      • 目标仓库:选择1中创建的目标。
      • 目标

        名称空间:填写SWR上的组织名称。

        仓库扁平化:用以在复制镜像时减少仓库的层级结构,建议选择“替换所有级”。假设Harbor仓库的层级结构为“library/nginx”,目标名称空间为dev-container,“替换所有级”对应的结果为:library/nginx -> dev-container/nginx。

      • 触发模式:选择“手动”。
      • 带宽:设置执行该条同步规则时的最大网络带宽,“-1”表示无限制。

  3. 创建完成后,选中后单击“复制”即可完成同步。

专线打通场景

  1. 配置VPC终端节点。

  2. 获取VPC内网访问IP及域名(华为云VPC内默认会自动加域名解析规则,不需要配置hosts;非华为云节点需要配置hosts),可以在终端节点详情页的“内网域名”中查询。

  3. Harbor上配置镜像仓库。

    Harbor在1.10.5以上版本,集成了华为云的SWR对接,只需要在目标(ENDPOINT)上选择就可以。本文以Harbor 2.4.1为例。

    1. 新建目标。

    2. 填写如下参数。

      • 提供者:必须选“Huawei SWR”。
      • 目标名:自定义。
      • 目标URL:使用VPC终端节点中的内网域名,必须以https开头,同时Harbor所在的容器内要配置域名映射。
      • 访问ID:遵循SWR的长期有效的认证凭证规则,以“区域项目名称@[AK]”形式填写。
      • 访问密码:遵循SWR的长期有效的认证凭证规则,需要用AK和SK来生成,详细说明请参考获取长期有效登录指令
      • 验证远程证书:必须取消勾选

  4. 配置同步规则。

    1. 新建规则

    2. 填写如下参数。

      • 名称:自定义。
      • 复制模式:选择“Push-based”,表示把镜像由本地Harbor推送到远端仓库。
      • 源资源过滤器:根据填写的规则过滤Harbor上的镜像。
      • 目标仓库:选择3中创建的目标。
      • 目标

        名称空间:填写SWR上的组织名称。

        仓库扁平化:用以在复制镜像时减少仓库的层级结构,建议选择“替换所有级”。假设Harbor仓库的层级结构为“library/nginx”,目标名称空间为dev-container,“替换所有级”对应的结果为:library/nginx -> dev-container/nginx。

      • 触发模式:选择“手动”。
      • 带宽:设置执行该条同步规则时的最大网络带宽,“-1”表示无限制。

  5. 创建完成后,选中后单击“复制”即可完成同步。