需要私有镜像仓库、镜像扫描、签名、复制和基于项目的权限控制。Harbor 适合替代简单的 registry,尤其是多团队、多集群和需要审计的生产环境。
helm repo add harbor https://helm.goharbor.io
helm repo update
helm show values harbor/harbor > harbor-values.yaml
helm install harbor harbor/harbor \
--namespace harbor --create-namespace \
-f harbor-values.yaml
关键配置包括 expose.type=ingress、expose.tls.enabled=true、database.type=external、redis.type=external、persistence.imageChartStorage.type=s3。
kubectl -n harbor get pods
kubectl -n harbor get ingress
curl -I https://harbor.example.com
# 在 UI 或 API 中创建项目 prod
curl -u admin:"$HARBOR_PASSWORD" -X POST \
-H 'Content-Type: application/json' \
https://harbor.example.com/api/v2.0/projects \
-d '{"project_name":"prod","public":false}'
创建机器人账号用于 CI 推送,只授予目标项目的 push/pull 权限。
配置镜像扫描和保留策略:
# 在 UI 中创建目标 registry 端点和复制规则
# 也可以用 API 创建 replication policy
docker login harbor.example.com 成功。docker push 和 docker pull 正常,镜像在 UI 可见。curl 不报证书错误。helm rollback harbor <revision> -n harbor。externalURL 配错,UI 重定向、webhook 和复制地址都会异常。docker / podman — 登录、推送和拉取镜像helm — 安装、升级和回滚 Harborkubectl — 查看组件和 Ingresscurl — 调用 Harbor API 和检查健康状态trivy — 本地镜像扫描