核心是两步:先用helm稳定部署harbor服务,再通过web ui或api配置推/拉模式的跨仓库镜像同步;全程云原生,无需物理机,依赖helm 3.10+、持久化存储类及tls证书,同步后k8s需配置imagepullsecrets和可信ca证书方可拉取。

在Kubernetes集群中部署Harbor并配置镜像同步,核心是两步:先用Helm稳定落地Harbor服务,再通过Web UI或API定义复制规则实现跨仓库同步。整个过程不依赖外部物理机,完全云原生,且同步支持推(push-based)和拉(pull-based)两种模式。
一、用Helm在K8s中部署Harbor
推荐使用官方Helm Chart(harbor/harbor),它自动管理Core、Registry、PostgreSQL、Redis、Trivy等组件,比离线包或Docker Compose更适配K8s生命周期。
- 确保已安装
helm 3.10+、kubectl连通集群,并配置好持久化存储类(如nfs-client或rook-ceph-block) - 添加仓库并安装(示例使用Ingress暴露+TLS):
helm repo add harbor https://helm.goharbor.iohelm repo updatekubectl create ns harborhelm install harbor harbor/harbor \--namespace harbor \--set expose.type=ingress \--set expose.tls.enabled=true \--set expose.ingress.hosts.core=harbor.example.com \--set persistence.persistentVolumeClaim.registry.storageClass=nfs-client \--set persistence.persistentVolumeClaim.registry.size=100Gi - 提前准备TLS证书Secret(如
harbor-tls),放在harbor命名空间下;若用cert-manager,可设certsource: cert-manager - 安装后验证:
kubectl -n harbor get pods应全为Running;访问https://harbor.example.com,用默认账号admin/密码Harbor12345登录
二、配置Harbor间镜像同步(复制策略)
同步功能由Harbor内置的“复制”模块驱动,无需额外组件。典型场景是主中心仓(北京)向边缘仓(上海)同步基础镜像,或Dev环境仓向Prod环境仓推送经扫描确认安全的镜像。
- 登录Harbor Web界面 → 左侧菜单点「复制」→ 「新建复制目标」:
填写目标Harbor地址(如https://harbor-sh.example.com)、认证方式(推荐Token或机器人账号)、启用TLS验证 - 回到「复制规则」→ 「新建复制规则」:
选择源项目(如base-images)、目标项目(同名或映射为prod-base)
过滤条件可设name matches "nginx.*"或tag matches "^v[0-9]+\.[0-9]+\.[0-9]+$"
触发模式选「事件驱动」(新镜像push即同步)或「定时执行」(如每天02:00) - 保存后,规则状态变为「就绪」;手动点击「立即复制」可触发首次同步;后续可在「任务日志」里查看每条同步任务的镜像层、耗时、错误详情
- 进阶:用Harbor REST API批量管理复制目标与规则,适合CI/CD流水线集成。例如用
curl -X POST -H "Authorization: Bearer $TOKEN" ... /api/v2.0/replication/policies
三、同步后的K8s使用要点
同步只是让镜像出现在目标Harbor,K8s拉取仍需正确配置。关键不在Harbor端,而在K8s侧:
- 若目标Harbor启用了HTTPS且用自签名证书,需将CA证书注入各Node的
/etc/docker/certs.d/<domain>/ca.crt</domain>,或配置kubelet的--image-pull-progress-deadline避免超时 - K8s Pod拉取私有镜像时,必须在Pod或ServiceAccount中引用
imagePullSecrets,该Secret由docker-registry类型创建,用户名密码对应目标Harbor的账号 - 建议为不同环境(dev/staging/prod)创建独立Harbor项目,并用项目级RBAC限制谁可推送/同步/删除,避免误操作扩散
整个流程跑通后,镜像从构建→推送→扫描→同步→部署形成闭环。同步本身不消耗K8s计算资源,只依赖Harbor实例的网络与存储带宽,稳定性高,企业级场景已广泛验证。











