使用Harbor的远程复制能力同步镜像到ACR企业版实例并实现异地容灾

本文介绍如何使用Harbor的远程复制功能将自建Harbor上的镜像单向同步到阿里云ACR企业版,并实现容器镜像仓库的异地容灾。

说明

若您不需要选择Harbor的远程复制来进行同步,或者对同步速率有较高的要求,请参见十分钟迁移自建Harbor至容器镜像服务企业版

前提条件

创建容器镜像服务企业版实例。具体操作,请参见创建企业版实例

操作步骤

Harbor同步镜像至ACR企业版实例

说明

若Harbor部署在本地IDC,首先需要打通本地IDC与云上VPC。具体操作,请参见获取路由规则IP实现跨地域或从IDC访问企业版实例

步骤一:创建命名空间

  1. 登录容器镜像服务控制台

  2. 在顶部菜单栏,选择所需地域。

  3. 在左侧导航栏,选择实例列表

  4. 实例列表页面单击目标企业版实例。

  5. 在企业版实例管理页面选择仓库管理 > 命名空间

  6. 命名空间页面单击创建命名空间

  7. 创建命名空间对话框中设置命名空间名称、是否自动创建仓库默认仓库类型。单击确定

    参数

    说明

    命名空间

    填入Harbor中需要同步的项目名称。例如test-project。

    自动创建仓库

    选择开启

    说明

    若选择关闭,在同步镜像前需要在ACR中创建相应的仓库。

    默认仓库类型

    自定义。建议选择私有

步骤二:在Harbor上配置目标仓库

  1. 登录Harbor

  2. 在左侧导航栏选择系统管理 > 仓库管理

  3. 仓库管理页面,单击新建目标image.png

  4. 新建目标对话框,填写参数配置。

    参数

    说明

    提供者

    选择Docker Registry。

    目标名

    自定义。

    描述

    自定义。

    目标URL

    填写ACR企业版实例目标仓库域名地址,确保访问控制已开启,更多信息,请参见配置专有网络的访问控制配置公网的访问控制

    • 专有网络:

      示例:https://<企业版实例名称>-registry-vpc.cn-qingdao.cr.aliyuncs.com

    • 公网:

      示例:https://<企业版实例名称>-registry.cn-qingdao.cr.aliyuncs.com

    访问ID

    仓库登录名为阿里云用户账号名。

    访问密码

    仓库登录密码。更多信息,请参见使用固定密码

    image.png

  5. 参数配置填写完成后,单击测试连接。若出现测试连接成功,则代表参数填写正确,单击确定image.png

步骤三:配置同步规则

  1. 登录Harbor

  2. 在左侧导航栏选择系统管理 > 复制管理

  3. 复制管理页面,单击新建规则image.png

  4. 新建规则对话框,填写参数。单击保存

    参数

    说明

    名称

    自定义。

    描述

    自定义。

    复制模式

    选择Push-based

    源资源过滤器

    用于过滤需要同步的资源,可依据Harbor界面的提示自行填写,默认为全部资源。

    目标仓库

    选择步骤二创建的目标。

    目标

    名称空间填写目标ACR上的命名空间;仓库扁平化用以在复制镜像时减少仓库的层级结构,推荐选择替换1级,例如:harbor-project/nginx -> acr-ns/nginx

    触发模式

    自定义。建议选择事件驱动来同步Harbor上的镜像变动。

    带宽

    限制同步时的最大网络带宽。默认为-1,表示无限制。

    image.png

  5. 复制管理页面,选择上一步骤中创建的规则,单击复制。可以手动同步存量的镜像到ACR企业版实例。当相应的复制任务转化为Succeeded后,同步任务运行成功。后续对Harbor相应仓库的改动将通过事件驱动同步至ACR企业版实例。image.png

配置自定义域名实现异地容灾

容器镜像服务企业版实例支持自定义域名功能,该功能允许为容器镜像服务企业版实例添加自定义域名和相应的SSL证书,从而使用自定义域名并通过HTTPS协议来访问实例。

根据不同的网络环境,可以使用如下不同的容灾方案。

方案一:Harbor部署在阿里云,业务通过公网访问ACR企业版实例

本文以ACR企业版实例在杭州,Harbor实例在张家口,且两个实例都配置了相同的域名并配置了PrivateZone为例。关于如何配置PrivateZone,请参见通过自定义域名访问容器镜像服务企业版实例

ACR企业版实例与Harbor实例基本信息如下。

实例ID

公网域名

绑定VPC

自定义域名

ACR-A

a-registry.cn-hangzhou.cr.aliyuncs.com

vpc-aaaaa

cross-region.registry.io

Harbor-B

-

vpc-bbbbb

cross-region.registry.io

若位于张家口的Harbor发生故障导致无法推拉镜像,您可以通过修改自定义域名PrivateZone解析来实现跨地域拉取ACR实例的同镜像,具体操作方式如下。

  1. 登录云解析DNS产品控制台

  2. 在左侧导航栏选择内网DNS解析 (PrivateZone)

  3. 内置权威页签下搜索Zone名称cross-region.registry.io(即实例的自定义域名),此时可以搜索到两个Zone,单击实例关联VPC为vpc-bbbbb的Zone。

  4. 解析设记录页签,单击目标记录操作列的修改

  5. 修改记录对话框,设置参数。单击确定

    参数

    说明

    记录类型

    选择CNAME

    主机记录

    设置为@

    记录值

    a-registry.cn-hangzhou.cr.aliyuncs.com(即 ACR 实例的公网域名)

    TTL时间

    默认值即可。

方案二:Harbor未部署在阿里云,业务通过公网访问ACR企业版实例

将自定义容器镜像服务ACR企业版实例的域名设置为自建Harbor使用的域名(例如:www.ha****.com)。更多内容,请参见通过自定义域名访问容器镜像服务企业版实例

若自建的Harbor发生故障导致无法推拉镜像,需要修改域名解析,使域名www.harbor.com可以解析到ACR企业版实例的公网IP,从而通过公网访问ACR企业版实例。

方案三:Harbor未部署在阿里云,业务通过专有网络访问ACR企业版实例

若自建Harbor发生故障导致无法推拉镜像。请先获取ACR企业版实例IP,配置路由规则以及域名解析,使自建Harbor使用的域名(例如:www.harbor.com)可以解析到ACR企业版实例的IP,从而通过专有网络访问ACR企业版实例。具体操作,请参见获取路由规则IP实现跨地域或从IDC访问企业版实例