Harbor的镜像复制功能
Harbor 提供镜像复制功能,允许用户以推送和拉取方式在不同 Harbor 仓库之间,以及 Harbor 与非 Harbor 仓库间(如Alibaba ACR、Quay、Aws ECR、Azu热ACR、Docker Registry、Docker Hub等)复制 image、chart 等资源。
以 Harbor 系统管理员身份设置好复制规则后,当满足触发条件时,所有与规则匹配的资源都会被复制到目标仓库中。每个被复制的资源都会启动一个复制任务。如果目标仓库中不存在命名空间,则会自动创建一个新的命名空间。
借助该功能,既可以用作harbor仓库的备份,也可以用于测试环境和生产环境之间做镜像、artifact等制品的同步。作为一种可以考虑的高可用部署的方案,可以部署两套harbor,互相配置镜像复制同步。
1. 操作步骤
下面以harbor复制镜像到harbor为例,这里准备两套harbor环境。
1.1 目的端harbor操作
在目的端harbor主要创建一个机器人账户,添加权限用于镜像拷贝等。
- 登录目的端harbor,进入系统管理-机器人账户,添加账户。
设置名称和过期时间:
- 设置系统权限
本文仅作测试场景,这里为了省事选择全部权限:
- 选择项目权限
- 记录账户信息
注意
这里的token仅显示一次,建议复制记录或者导出到文件中。当然也可以后期手动更新token,但是同时也需要在源端执行更新操作。
1.2 源端harbor操作
-
登录资源所在的 Harbor Web界面,即复制镜像的源仓库。
-
创建目标仓库。进入系统管理-仓库管理,新建目标,此处填写目的端harbor的信息。
说明:
- 如果填写的目标URL是域名,确保源端harbor机器能够解析域名。
- 由于远端仓库使用的是自签证书或者非信任证书,这里取消勾选验证远程证书。
- 创建复制规则。进入系统管理-复制管理,新建规则,配置复制模式、源资源过滤器、目的仓库、触发模式等。
复制模式:支持主动push,或者主动拉取两种。
源资源过滤器:
- 支持全部项目或者部分匹配;
- 支持根据tag、标签进行过滤;
- 支持根据资源类型(image、artifact)进行过滤。
触发模式:支持手动、定时或者事件驱动。
带宽:支持拷贝限速,默认不限。
其他:可以选择是否覆盖,启用分块复制。
更详细的说明请参考官方文档:
https://goharbor.io/docs/2.11.0/administration/configuring-replication/create-replication-rules/
- 启动复制任务
本文创建的是一个手动触发的规则,选中复制规则,执行复制任务。
在目标harbor仓库查看,自动创建了与源仓库相同的项目和制品、镜像等。且复制后的镜像拉取命令替换了repository前缀,是适用于当前仓库的pull命令格式。