Harbor
本文最后更新于 2024-12-30,文章内容可能已经过时。
介绍
Harbor 是一个开源的容器镜像仓库,旨在通过为用户提供高效、安全和可扩展的镜像管理功能,帮助企业更好地管理容器镜像。
访问控制:提供基于角色的访问控制(RBAC),可以限制用户对镜像的操作权限。多种身份认证支持: LDAP、OAuth 等外部认证系统。
ps: Docker reigstry与 Distribution:
Docker Registry 使用了 Distribution 的核心库,用于处理镜像的上传、下载和存储。
Distribution 是一个开源的底层实现,Registry 在其之上扩展了用户认证、访问控制等功能。
部署
以下是使用 Helm 部署 Harbor 的完整步骤。Harbor 是一个开源的镜像仓库,支持多种镜像格式,适合在 Kubernetes 环境中使用。我们将利用官方的 Harbor Helm Chart 来部署。
1. 环境准备
确保以下工具已安装:
Kubernetes 集群(可以使用 Minikube、Kubeadm 或云服务提供的 Kubernetes 集群)
kubectl(Kubernetes 命令行工具)
Helm(版本建议 v3 或以上)
准备必要的资源:
域名(用于访问 Harbor 的 Web UI)
配置证书(可选,推荐使用自签名证书或 Let's Encrypt)
2. 添加 Harbor Helm Chart 仓库
3. 创建命名空间
为 Harbor 创建一个单独的命名空间(非必须,但推荐)。
4. 获取默认 values.yaml
运行以下命令下载 Harbor Helm Chart 的 values.yaml
文件,并根据实际需求修改配置。
打开 values.yaml
,需要关注以下关键配置:
1. 域名配置
配置 Harbor 的访问地址(用于 Web UI 和 API 访问)。
2. HTTPS 配置
如果有证书,可以配置 TLS:
如果没有证书,先使用 http
访问,将 type
修改为 clusterIP
,稍后可以配置 HTTPS:
3. 持久化存储配置
为持久化 Harbor 数据,需设置存储卷:
4. 数据库配置
默认会使用 Chart 自带的 PostgreSQL 和 Redis,但也可以配置外部数据库。
5. 其他配置
设置管理员密码:
5. 部署 Harbor
在配置完成的 values.yaml
文件基础上,执行以下命令开始部署:
6. 验证部署
运行以下命令,确认 Harbor 的 Pod 和服务正常运行:
如果配置了 Ingress,还需要验证 Ingress 是否生效:
7. 访问 Harbor
通过浏览器访问 http://harbor.example.com
或 https://harbor.example.com
(取决于是否配置了 TLS)。
默认管理员账号为 admin
,密码为配置文件中的 harborAdminPassword
。
8. 自签名证书(可选)
如果没有正式的域名和证书,可以生成自签名证书并挂载到 Harbor:
生成证书
创建 Kubernetes Secret
修改 values.yaml
文件
确保 tls
配置指向创建的 Secret:
重新应用:
9. 配置 Docker 客户端(信任自签名证书)
编辑 Docker 客户端的配置文件(/etc/docker/daemon.json
):
重启 Docker:
10. 管理和使用 Harbor
通过 Web UI 管理项目、用户和镜像。
在 Kubernetes 集群中使用时,可配置 Harbor 为镜像仓库,直接拉取镜像。