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)

下图展示了从创建规则到触发同步的完整配置流程,以及各环节的决策点:

同步规则配置流程 ① 创建复制规则 ② 选择/新建目标仓库 ③ 配置资源过滤 ④ 选择触发模式 ? 手动?定时?事件驱动? 手动触发 定时触发(Cron) 事件驱动 提示:事件驱动模式要求源 Harbor 开启 Webhook 功能,并确保网络可达

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 的“复制执行记录”页面,确认任务状态为“成功”。