3、同步规则配置:创建复制规则、目标仓库配置、资源过滤与触发模式
复制规则是 Harbor 镜像同步的核心编排单元,它定义了“从哪同步、同步什么、何时触发”三个关键要素。本章将拆解规则配置的完整流程,涵盖目标仓库对接、资源过滤策略以及三种触发模式的选择与适用场景。
3.1 复制规则配置总览
在 Harbor 管理界面中,进入 系统管理 → 复制管理 即可创建新的复制规则。一条完整的规则由以下四部分构成:
| 配置阶段 | 核心操作 | 关键参数 |
|---|---|---|
| ① 基础信息 | 定义规则名称、描述、方向 | 名称(唯一)、推送/拉取、是否启用 |
| ② 目标仓库 | 选择或新建远端仓库端点 | URL、访问凭证、验证证书、代理 |
| ③ 资源过滤 | 限定同步的镜像范围 | 项目、仓库名、标签、资源类型 |
| ④ 触发模式 | 设定同步启动条件 | 手动、定时(Cron)、事件驱动 |
最佳实践:建议在创建规则前先完成目标仓库的注册(系统管理 → 目标仓库),这样在创建规则时可直接下拉选择,避免重复填写凭证。
3.2 目标仓库配置
目标仓库是同步的目的地,支持 Harbor 到 Harbor、Harbor 到其他兼容 Registry(如 Docker Hub、AWS ECR、GitLab Container Registry)的同步。配置时需填写以下字段:
- 提供者:选择目标仓库类型(Harbor、Docker Hub、AWS ECR、Generic Docker Registry 等)。
- 目标 URL:远端仓库的访问地址,例如
https://registry.example.com。 - 访问凭证:支持用户名/密码或 Access Key/Secret Key,根据提供者类型自动切换。
- 验证远程证书:生产环境建议开启;测试环境可关闭以跳过自签名证书校验。
- HTTP 代理:当 Harbor 与目标仓库之间存在网络隔离时,可配置代理转发。
注意:如果目标仓库启用了 只读模式,推送规则将失败。建议在目标仓库侧预留足够的存储空间,并确保网络连通性(可通过 Harbor 的“测试连接”按钮验证)。
3.3 资源过滤:项目/仓库/标签
资源过滤决定了哪些镜像会被纳入同步范围。Harbor 提供三级过滤机制,支持组合使用:
| 过滤层级 | 配置方式 | 示例 | 说明 |
|---|---|---|---|
| 项目(Project) | 下拉选择或输入正则 | library、project-* |
只同步指定项目下的镜像;支持通配符 |
| 仓库(Repository) | 正则表达式匹配 | nginx、.*/backend |
在已选项目内进一步过滤仓库名 |
| 标签(Tag) | 正则表达式匹配 | v[0-9]+\.[0-9]+、latest |
只同步符合标签规则的镜像版本 |
常见陷阱:如果过滤条件写得太宽(如标签设为
.*),可能导致大量非预期镜像被同步,占用带宽和存储。建议先使用“模拟同步”功能(Harbor 2.x+)预览匹配结果,再正式启用规则。
3.4 触发模式:手动/定时/事件驱动
Harbor 支持三种触发模式,分别对应不同的运维场景:
- 手动触发:在规则页面点击“同步”按钮立即执行。适用于一次性迁移、紧急同步或故障恢复后的数据补齐。
- 定时触发:基于 Cron 表达式周期性执行。适用于定期备份、跨地域定时同步。例如
0 2 * * *表示每天凌晨 2 点执行。 - 事件驱动:当源仓库发生镜像推送或删除操作时,自动触发同步。适用于实时同步场景,如 CI/CD 流水线推送后立即同步到灾备站点。
推荐组合:生产环境通常采用“事件驱动 + 定时全量”的双重策略——事件驱动保证实时性,定时全量作为兜底,防止事件丢失导致的数据不一致。
3.5 同步规则配置流程(SVG)
下图展示了从创建规则到触发同步的完整配置流程,以及各环节的决策点:
3.6 触发模式对比与选型建议
三种触发模式各有优劣,下表从延迟、资源消耗、适用场景三个维度进行对比:
| 触发模式 | 同步延迟 | 资源消耗 | 适用场景 | 注意事项 |
|---|---|---|---|---|
| 手动 | 由操作者控制 | 按需消耗 | 一次性迁移、故障恢复、测试验证 | 无法自动化,依赖人工介入 |
| 定时(Cron) | 取决于周期(分钟~天) | 周期性固定开销 | 定期备份、非实时同步、跨地域批量同步 | 可能错过两次触发之间的变更 |
| 事件驱动 | 秒级(近实时) | 随事件量线性增长 | CI/CD 流水线、灾备实时同步、多站点一致性 | 依赖 Webhook 可靠性,需监控事件队列 |
选型建议:如果同步链路为“开发环境 → 测试环境”,建议使用事件驱动保证快速反馈;如果是“生产环境 → 灾备站点”,建议事件驱动 + 每日定时全量双重保障。
3.7 资源过滤与触发模式的协同(SVG)
下图展示了资源过滤与触发模式如何协同工作,确保只有符合条件的镜像在正确的时机被同步:
3.8 配置示例:生产环境灾备同步规则
以下是一个典型的生产环境同步规则配置示例,用于将 生产 Harbor 的 production 项目下所有带 v* 标签的镜像实时同步到 灾备 Harbor:
规则名称:prod-to-dr-sync
方向:推送(Push)
目标仓库:dr-harbor(已注册,URL: https://dr-harbor.example.com)
资源过滤:
- 项目:production
- 仓库:.*(所有仓库)
- 标签:v[0-9]+\.[0-9]+\.[0-9]+
触发模式:事件驱动(Event Driven)
高级选项:
- 覆盖同名镜像:是
- 删除远端多余镜像:否(避免误删)
- 同步删除操作:否(仅同步新增/更新)
验证方法:配置完成后,在源仓库推送一个符合标签规则的镜像(如
nginx:v1.2.3),检查目标仓库是否在 10 秒内出现该镜像。同时观察 Harbor 的“复制执行记录”页面,确认任务状态为“成功”。