1. Harbor 复制策略概述
什么是 Harbor 复制
Harbor 复制(Replication)是 Harbor 内置的跨实例镜像与 Helm Chart 同步机制。它允许用户基于规则将制品从一个 Harbor 实例(源)自动或手动拷贝到另一个 Harbor 实例(目标),支持单次触发、定时同步以及事件驱动实时同步三种模式。
复制的最小操作单元是 规则(Rule),每条规则定义了源资源过滤器、目标注册表、同步模式、覆盖策略以及安全校验参数。Harbor 复制本质上是 拉取(Pull) 或 推送(Push) 模式的制品传输管道,底层依赖 Docker Registry HTTP API V2 和 OCI 分发规范。
核心机制:复制不是简单的文件拷贝,而是基于 Digest 的增量同步。Harbor 会对比源与目标的 Manifest 列表,只传输缺失或变更的 Blob 层,大幅降低跨环境带宽消耗。
复制策略的核心价值
复制策略在云原生交付链路中承担着 制品分发枢纽 的角色,其核心价值体现在四个维度:
| 价值维度 | 具体说明 | 典型收益 |
|---|---|---|
| 环境解耦 | 开发、测试、预发、生产环境使用独立的 Harbor 实例,通过复制策略单向或双向同步 | 避免多环境共用同一 Registry 导致的命名空间污染与权限混乱 |
| 高可用容灾 | 主实例故障时,从实例通过复制保持制品一致性,实现跨站点快速切换 | RPO(恢复点目标)可控制在分钟级,RTO(恢复时间目标)取决于网络与存储 |
| 带宽优化 | 仅同步差异层,支持限速、过滤标签和按需同步 | 跨国多站点场景下带宽消耗降低 60%–90% |
| 合规与审计 | 复制日志记录每次同步的制品、时间、结果,支持与外部审计系统集成 | 满足金融、医疗等行业对制品流转的追溯要求 |
跨环境复制的典型场景
在实际交付流水线中,跨环境复制通常以 环境链 的形式出现。以下三种场景覆盖了 90% 以上的企业需求:
- 场景一:开发 → 测试 → 预发 → 生产 逐级晋升
每个环境拥有独立的 Harbor 实例,制品通过 CI 流水线构建后先推送到开发 Harbor,经测试验证后通过复制策略晋升到测试 Harbor,最终同步到生产 Harbor。这种模式严格隔离了环境,防止未验证制品流入生产。 - 场景二:主站点 → 灾备站点 异地容灾
主站点 Harbor 开启实时复制(Event-Driven),每当有新的 Tag 被推送或删除,立即同步到灾备站点。配合全局负载均衡,当主站点不可用时,Kubernetes 集群自动切换拉取灾备站点的镜像。 - 场景三:总部 Harbor → 边缘站点 分发加速
在边缘计算或 IoT 场景中,总部 Harbor 作为中央制品库,通过复制策略将基础镜像分发到各区域边缘 Harbor。边缘节点本地拉取,避免跨 WAN 的高延迟和单点瓶颈。
实战提示:跨环境复制最容易踩的坑是 覆盖策略 配置错误。如果目标实例已存在同名 Tag 但 Digest 不同,Harbor 默认会跳过复制。在晋升场景中,建议将覆盖策略设为“覆盖同名 Tag”,确保环境间制品版本完全一致。
下图展示了典型的三环境晋升复制拓扑,清晰呈现了从开发 Harbor 到生产 Harbor 的制品流转路径:
除了晋升拓扑,主备容灾 是另一个高频场景。下图展示了基于事件驱动复制的异地容灾架构,主实例的每一次 Tag 变更都会实时同步到灾备实例:
避坑提醒:事件驱动复制依赖 Harbor 的 Webhook 机制。如果主实例与灾备实例之间的网络存在防火墙或代理,必须确保 Webhook 回调地址可达,否则复制会静默失败。建议在配置复制规则后,先手动执行一次“测试连接”并观察复制日志。