Harbor 和 Helm
Harbor 和 Helm 在 Kubernetes 生态中的职责明确分工,同时又紧密协作:
🔧 一、核心职责对比
工具 | 核心职责 | 关键功能 |
---|---|---|
Harbor | 镜像与制品存储管理 | - 容器镜像的存储、分发、复制 - Helm Chart(OCI 格式)的托管 - 安全扫描(Trivy)、镜像签名、RBAC 权限控制 - 审计日志与多租户隔离 |
Helm | 应用部署与生命周期管理 | - 将 Kubernetes 应用打包为 Chart(含部署模板) - 一键安装/升级/回滚应用 - 参数化配置( values.yaml )- 依赖管理 |
⚡ 二、协作流程(典型场景)
-
镜像与 Chart 存储
- 开发者将 Docker 镜像推送到 Harbor,同时将 Helm Chart(包含部署模板)推送至 Harbor 的 Helm 仓库(以 OCI Artifact 格式存储)。
- Harbor 对镜像进行漏洞扫描,确保安全性 。
-
应用部署
- Helm 从 Harbor 拉取 Chart:
helm pull oci://harbor.example.com/project/my-chart --version 1.0.0
- 执行部署命令,自动拉取 Chart 中定义的镜像(来自 Harbor):
helm install myapp ./my-chart --set image.repository=harbor.example.com/project/my-image
- Helm 从 Harbor 拉取 Chart:
-
CI/CD 集成
- Jenkins/GitLab CI 触发构建 → 生成镜像并推送到 Harbor → 更新 Chart 版本并推送至 Harbor → Helm 自动升级生产环境应用 。
💎 三、功能互补性
-
Harbor 的扩展价值:
- 自 v2.8 起,弃用 ChartMuseum,直接以 OCI 格式存储 Helm Chart,复用镜像的 RBAC 和存储体系,实现统一管理 。
- 支持跨集群镜像复制,确保全球部署一致性 。
-
Helm 的部署优势:
- 通过模板化(如
{{ .Values.image.repository }}
)动态注入 Harbor 镜像地址,避免硬编码 。 - 依赖管理(如子 Chart)简化多组件应用编排 。
- 通过模板化(如
⚠️ 四、常见误区澄清
误区 | 正解 |
---|---|
“Harbor 能直接部署应用” | Harbor 仅存储资源(镜像/Chart),部署由 Helm 或 Kubernetes 原生工具执行 |
“Helm 包含镜像” | Chart 仅定义镜像路径(如 image: harbor.example.com/app:v1 ),镜像需独立推送至 Harbor |
“两者可相互替代” | 缺一不可:Harbor 是“仓库管理员”,Helm 是“部署工程师” |
✅ 总结:协同价值
- 安全闭环:Harbor 扫描镜像 → Helm 部署可信应用。
- 效率提升:内网环境中,Harbor 作为私有仓库加速镜像/Chart 分发,Helm 实现秒级部署。
- 企业级治理:RBAC 控制 Chart 访问权限 + 审计日志追踪部署全流程 。
生产建议:为 Harbor 配置 TLS 证书,避免 Helm 操作时使用
--insecure-skip-tls-verify
;同时通过 Helm 的dependencies
管理复杂应用拓扑 。