让 Harbor 达到生产就绪:部署的关键考虑因素
Source: VMware Blog
Harbor 是一个开源容器镜像仓库,通过策略和基于角色的访问控制来保护制品,确保镜像进行漏洞扫描并签名为可信。要了解更多关于 Harbor 以及如何在虚拟机 (VM) 和 Kubernetes (K8s) 上部署它,请参考系列的第 1 和 2 部分。

虽然部署 Harbor 相对简单,但要使其达到生产就绪水平,需要仔细考虑多个关键方面。本指南聚焦于通过 Helm 在 Kubernetes 上部署的上游 Harbor (v2.14),并提供针对该部署的建议。
高可用性 (HA) 与可扩展性
在生产环境中,单点故障是不可接受的。实现 Harbor 的高可用性涉及以下几个方面:
使用 Ingress 部署
在 Harbor 实例前配置一个 Ingress 类型的 Kubernetes Service(例如 Traefik),用于分发流量并提供统一入口。使用 cert‑manager 进行证书管理。
expose:
type: ingress # options: loadBalancer, ingress, clusterIP, nodePort
运行多个 Harbor 实例
为关键的 Harbor 组件(core、jobservice、portal、registry、trivy)增加副本数,以确保冗余:
core:
replicas: 3
jobservice:
replicas: 3
portal:
replicas: 3
registry:
replicas: 3
trivy:
replicas: 3
exporter:
replicas: 3 # optional, for monitoring availability
nginx:
replicas: 3 # if using Ingress, improves Ingress availability
外部 PostgreSQL(数据库 HA)
Harbor 内置的 PostgreSQL 为单节点部署,不建议在生产环境使用。部署高可用的 PostgreSQL 集群(如 Patroni、CloudNativePG)或使用托管服务,然后将 Harbor 指向该数据库:
database:
type: external
external:
host: "192.168.0.1"
port: "5432"
username: "user"
password: "password"
coreDatabase: "registry"
existingSecret: "" # if using a secret, the key must be "password"
sslmode: "verify-full" # options: disable, require, verify-ca, verify-full
外部 Redis(Redis HA)
部署高可用的 Redis 集群(如 Redis Sentinel 或 Redis Cluster)或使用托管 Redis 服务,然后在 Harbor 中进行相应配置:
redis:
type: external
external:
addr: "192.168.0.2:6397"
sentinelMasterSet: ""
tlsOptions:
enable: true
username: ""
password: ""
安全最佳实践
安全是任何生产系统的首要任务,容器镜像仓库尤为重要。
启用 TLS/SSL
始终为所有 Harbor 组件启用 TLS/SSL。结合 cert‑manager 实现证书的自动化申请:
expose:
tls:
enabled: true
certSource: auto # change to manual if using cert-manager
auto:
commonName: ""
internalTLS:
enabled: true
strong_ssl_ciphers: true
certSource: "auto"
core:
secretName: ""
jobService:
secretName: ""
registry:
secretName: ""
portal:
secretName: ""
trivy:
secretName: ""
配置 RBAC 与身份提供者
利用 Kubernetes RBAC 管理对 Harbor 资源的访问。部署完成后,将 Harbor 与企业级身份提供者(如 LDAP 或 OIDC)集成。参考官方指南:

启用漏洞扫描
Harbor 默认使用 Trivy。确保已开启扫描功能:
trivy:
enabled: true

激活内容信任
Harbor 支持现代 OCI 制品签名机制,如 Cosign 和 Notation。通过 UI 或 Harbor API 在项目层面强制内容信任,只允许经过加密签名的镜像。

保持 Harbor 更新
定期升级 Harbor Helm Chart 以及底层的 Kubernetes 组件,以获取最新的安全补丁和 bug 修复:
helm repo update
helm upgrade harbor harbor/harbor -f values.yaml
存储考虑
高效且可靠的存储对 Harbor 的性能和稳定性至关重要。
- 进一步的存储建议(例如共享存储后端、性能调优、备份策略)将在此处详细说明。