
# 跨云Harbor同步镜像至华为云SWR
#### 场景描述
部分客户存在多云场景，并且使用某一家云上的自建Harbor作为镜像仓库。跨云Harbor同步镜像至SWR存在两种场景：
1. Harbor可以通过公网访问SWR，配置方法参见[公网访问场景]。
2. 通过专线打通Harbor到VPC间的网络，使用VPC终端节点访问SWR，配置方法参见[专线打通场景]。
 
#### 背景知识
Harbor是VMware公司开源的企业级Docker Registry管理项目，在开源Docker Distribution能力基础上扩展了例如权限管理（RBAC）、镜像安全扫描、镜像复制等功能。Harbor目前已成为自建容器镜像托管及分发服务的首选。
 #### 公网访问场景
1. Harbor上配置镜像仓库。
   
   ![](https://support.huaweicloud.com/bestpractice-swr/public_sys-resources/note_3.0-zh-cn.png)
   Harbor在1.10.5以上版本，集成了华为云的SWR对接，只需要在目标（ENDPOINT）上选择就可以。本文以Harbor 2.4.1为例。
   1. 新建目标。 ![](https://support.huaweicloud.com/bestpractice-swr/zh-cn_image_0294804214.png "点击放大")
      
      
   
   2. 填写如下参数。 ![](https://support.huaweicloud.com/bestpractice-swr/zh-cn_image_0294808898.png "点击放大")
      
      - 提供者：必须选"Huawei SWR"。
      
      - 目标名：自定义。
      
      - 目标URL：使用SWR的公网域名，格式为https://{*SWR镜像仓库地址* }，例如：https://swr.cn-east-3.myhuaweicloud.com。镜像仓库地址获取方法：登录[SWR控制台](https://console.huaweicloud.com/swr/#/swr/dashboard)，进入"我的镜像"，单击"客户端上传"，在弹出的页面即可查看SWR当前Region的镜像仓库地址。
        
        ![](https://support.huaweicloud.com/bestpractice-swr/zh-cn_image_0000002666179289.png "点击放大")
        
        
      
      - 访问ID：遵循SWR的长期有效的认证凭证规则，以"区域项目名称@\[AK\]"形式填写。
      
      - 访问密码：遵循SWR的长期有效的认证凭证规则，需要用AK和SK来生成，详细说明请参考[获取长期有效登录指令](https://support.huaweicloud.com/usermanual-swr/swr_01_1000.html)。
      
      - 验证远程证书：建议**取消勾选**。
       
   
   
   
   
2. 配置同步规则。 
   1. 新建规则 ![](https://support.huaweicloud.com/bestpractice-swr/zh-cn_image_0294804326.png "点击放大")
      
   
   2. 填写如下参数。 
      ![](https://support.huaweicloud.com/bestpractice-swr/zh-cn_image_0000002686522571.png "点击放大")
      
      - 名称：自定义。
      
      - 复制模式：选择"Push-based"，表示把镜像由本地Harbor推送到远端仓库。
      
      - 源资源过滤器：根据填写的规则过滤Harbor上的镜像。
      
      - 目标仓库：选择[1]中创建的目标。
      
      - 目标 名称空间：填写SWR上的组织名称。
        ![](https://support.huaweicloud.com/bestpractice-swr/public_sys-resources/caution_3.0-zh-cn.png)
        此处如果名称空间填写成带/的格式，例如ns1/test，Huawei SWR在处理时会把ns1当作组织名称，test当作镜像前的层级，即ns1组织下的镜像名称为test/\*。
        仓库扁平化：用以在复制镜像时减少仓库的层级结构，建议选择"替换所有级"。假设Harbor仓库的层级结构为"library/nginx"，目标名称空间为dev-container，"替换所有级"对应的结果为：library/nginx -\> dev-container/nginx。
        
      
      - 触发模式：选择"手动"。
      
      - 带宽：设置执行该条同步规则时的最大网络带宽，"-1"表示无限制。
       
   
   
   更详细的参数解释请参考[Harbor官网文档](https://goharbor.io/docs/2.11.0/administration/configuring-replication/create-replication-rules/)。
   
   
3. 创建完成后，选中后单击"复制"即可完成同步。 
   ![](https://support.huaweicloud.com/bestpractice-swr/zh-cn_image_0294800819.png "点击放大")
   
   
 
 #### 专线打通场景
1. 配置VPC终端节点。 
   
   ![](https://support.huaweicloud.com/bestpractice-swr/zh-cn_image_0000002656445156.png "点击放大")
   
   
   
2. 获取VPC内网访问IP及域名（华为云VPC内默认会自动加域名解析规则，不需要配置hosts；非华为云节点需要配置hosts），可以在终端节点详情页的"内网域名"中查询。 
   
   ![](https://support.huaweicloud.com/bestpractice-swr/zh-cn_image_0000002656605834.png "点击放大")
   
   
   
3. Harbor上配置镜像仓库。
   
   ![](https://support.huaweicloud.com/bestpractice-swr/public_sys-resources/note_3.0-zh-cn.png)
   Harbor在1.10.5以上版本，集成了华为云的SWR对接，只需要在目标（ENDPOINT）上选择就可以。本文以Harbor 2.4.1为例。
   1. 新建目标。 ![](https://support.huaweicloud.com/bestpractice-swr/zh-cn_image_0000002656450766.png "点击放大")
      
      
   
   2. 填写如下参数。 ![](https://support.huaweicloud.com/bestpractice-swr/zh-cn_image_0000002686536829.png "点击放大")
      
      - 提供者：必须选"Huawei SWR"。
      
      - 目标名：自定义。
      
      - 目标URL：**使用VPC终端节点中的内网域名**，必须以https开头，同时Harbor所在的容器内要配置域名映射。
      
      - 访问ID：遵循SWR的长期有效的认证凭证规则，以"区域项目名称@\[AK\]"形式填写。
      
      - 访问密码：遵循SWR的长期有效的认证凭证规则，需要用AK和SK来生成，详细说明请参考[获取长期有效登录指令](https://support.huaweicloud.com/usermanual-swr/swr_01_1000.html)。
      
      - 验证远程证书：必须**取消勾选**。
       
   
   
   
   
4. 配置同步规则。 
   1. 新建规则 ![](https://support.huaweicloud.com/bestpractice-swr/zh-cn_image_0294810557.png "点击放大")
      
   
   2. 填写如下参数。 ![](https://support.huaweicloud.com/bestpractice-swr/zh-cn_image_0294810558.png "点击放大")
      - 名称：自定义。
      
      - 复制模式：选择"Push-based"，表示把镜像由本地Harbor推送到远端仓库。
      
      - 源资源过滤器：根据填写的规则过滤Harbor上的镜像。
      
      - 目标仓库：选择[3]中创建的目标。
      
      - 目标 名称空间：填写SWR上的组织名称。
        ![](https://support.huaweicloud.com/bestpractice-swr/public_sys-resources/caution_3.0-zh-cn.png)
        此处如果名称空间填写成带/的格式，例如ns1/test，Huawei SWR在处理时会把ns1当作组织名称，test当作镜像前的层级，即ns1组织下的镜像名称为test/\*。
        仓库扁平化：用以在复制镜像时减少仓库的层级结构，建议选择"替换所有级"。假设Harbor仓库的层级结构为"library/nginx"，目标名称空间为dev-container，"替换所有级"对应的结果为：library/nginx -\> dev-container/nginx。
        
      
      - 触发模式：选择"手动"。
      
      - 带宽：设置执行该条同步规则时的最大网络带宽，"-1"表示无限制。
       
   
   
   更详细的参数解释请参考[Harbor官网文档](https://goharbor.io/docs/2.11.0/administration/configuring-replication/create-replication-rules/)。
   
   
5. 创建完成后，选中后单击"复制"即可完成同步。 
   ![](https://support.huaweicloud.com/bestpractice-swr/zh-cn_image_0294810559.png "点击放大")
   
   
 
