1、Harbor的定义与核心作用
-
定义:
Harbor是由VMware开源的企业级容器镜像仓库系统,后捐赠给 CNCF (Cloud Native Computing Foundation)。它基于Docker Registry扩展了企业级功能,用于存储、分发和管理容器镜像(如Docker、OCI标准镜像)及其他制品(如Helm Chart、CNAB等)。 -
核心作用:
- 镜像管理:提供安全、高效的镜像存储与版本控制。
- 权限控制:支持细粒度的访问权限管理。
- 安全扫描:集成漏洞扫描工具(如Clair)确保镜像安全。
- 镜像复制:支持跨数据中心或云环境的镜像同步。
- 审计日志:记录用户操作,满足合规性要求。
2、Harbor的核心功能
(1)、企业级权限管理
- RBAC(基于角色的访问控制):
- 支持按项目分配用户权限(如Guest、Developer、Admin)。
- 可自定义角色,根据用户的角色来管理对项目和资源的访问权限,满足多团队协作需求。
- 集成身份认证:
- 支持对接LDAP/AD,与企业现有用户体系无缝集成。
(2)、镜像安全与扫描
- 漏洞扫描:
- 集成Clair等工具,自动扫描镜像中的已知漏洞。
- 可配置镜像推送时的自动扫描策略。
- 内容信任:
- 支持镜像签名(通过Notary),确保镜像来源可信。
扩展:Clair
Clair是一个开源项目,专注于为容器镜像提供漏洞静态分析的能力。它由CoreOS开发(后来CoreOS被Red Hat收购),旨在帮助用户识别并解决容器镜像中的安全问题。通过分析容器镜像的各个层,并将它们与已知的安全漏洞数据库进行比较,Clair能够检测出其中包含的软件包是否有任何公开的、已知的安全漏洞。
Clair工作流程:
- 用户提交需要扫描的容器镜像至Clair。
- Clair分析该镜像的各层,并提取出操作系统及软件包的信息。
- 将提取的信息与Clair的漏洞数据库进行对比。
- 根据对比结果生成漏洞报告,显示受影响的软件包、相关漏洞的描述以及建议的解决方案。
- 用户根据报告更新镜像,修补发现的漏洞。
(3)、镜像生命周期管理
- 镜像复制:
- 支持将镜像同步到远程Harbor实例(如灾备中心或多地部署)。
- 垃圾回收:
- 自动清理未使用的镜像层,释放存储空间。
- 版本控制:
- 支持保留或删除旧版本镜像,管理存储成本。
(4)、用户界面与扩展性
- Web界面:
- 提供图形化界面管理项目、用户、镜像及操作日志。
- 镜像删除回收站:提供安全地删除镜像以及从回收站恢复的功能。
- API集成:
- 提供RESTful API,支持与CI/CD工具(如Jenkins、GitLab)集成。
- 存储扩展:
- 支持将镜像存储在对象存储(如AWS S3、阿里云OSS)中,实现高可用与弹性扩展。
3、Harbor的架构
(1)、架构分层
- 代理层:
- Nginx反向代理:接收客户端请求(如浏览器、Docker CLI),并转发到后端服务。
- 功能层:
- Portal:Web前端界面,基于Angular开发。
- Core Service:核心业务逻辑组件,包括UI、token服务、API服务等,处理用户请求、权限验证等业务逻辑。
- Job Service:异步任务处理(如镜像复制、漏洞扫描)。
- Registry:基于Docker Registry的镜像存储引擎。核心组件,负责存储Docker镜像,并处理Docker客户端的push和pull请求。
- Clair(可选):漏洞扫描工具。
- Log collector:收集各个组件的日志信息,便于问题排查和审计。
- 数据层:
- PostgreSQL:存储元数据(如项目、用户、权限)。
- Redis:缓存及任务队列管理。
- 存储后端:本地文件系统或对象存储(如S3)。
(2)、核心组件
4、Harbor的安装与配置
(1)、环境要求
- 硬件:至少2核CPU、4G内存、40G存储。
- 软件:Docker 1.10+、Docker Compose 1.6+。
(2)、安装步骤(以v2.4.1为例)
1. 下载安装包:
bash示例:
wget https://github.com/goharbor/harbor/releases/download/v2.4.1/harbor-online-installer-v2.4.1.tgz
tar zxvf harbor-online-installer-v2.4.1.tgz
cd harbor
2. 配置harbor.yml:
- 修改hostname(如harbor.example.com)。
- 配置数据库密码、管理员密码等。
3. 启动Harbor:
bash示例:
./install.sh
4. HTTPS 配置(可选):
- 生成SSL证书(如Let’s Encrypt)。
- 修改harbor.yml中的HTTPS相关配置,重启服务。
5. 部署注意事项
- 内网环境:
- 需配置Docker客户端信任私有仓库
修改/etc/docker/daemon.json:
- 需配置Docker客户端信任私有仓库
{"insecure-registries": ["your-harbor-host:port"]
}
6.重启docker
systemctl restart docker
7.镜像推送测试
bash示例:
docker tag my-image your-harbor-host:port/project/image:tag
docker push your-harbor-host:port/project/image:tag
5、Harbor的典型应用场景
(1)、企业级私有镜像管理仓库
- 场景:
- 多团队协作开发,需隔离镜像仓库。
- 需要权限控制(如限制敏感镜像访问)。
bash示例:
# 创建项目并分配权限
harbor admin create-project --project-name my-team --public false
harbor admin add-user-to-project --user admin --project my-team --role Admin
(2)、安全合规与漏洞管理
- 场景:
- 需确保镜像无已知漏洞(如CVE)。
- 需审计镜像操作日志。
- 操作:
- 在Harbor Web界面启用漏洞扫描策略。
- 通过API或CLI导出审计日志。
(3)、跨数据中心镜像同步
利用其镜像复制功能,可以在不同的地理位置或数据中心之间同步镜像,保证服务的连续性和可靠性。
- 场景:
- 在多地部署Kubernetes集群,需同步镜像。
- 灾备场景下镜像备份到异地仓库。
- 配置:
- 在Harbor中配置“复制目标”(远程Harbor实例),设置定时任务。
6、Harbor的优势与特点
(1)、与Docker Registry的对比
(2)、核心优势
- 安全增强:漏洞扫描、镜像签名、细粒度权限控制。
- 易用性:图形化界面简化镜像和项目管理。
- 企业级扩展:支持高可用部署、多云存储、与 CI/CD 工具集成。
7、常见问题与解决方案
(1)、Harbor安装后无法访问Web界面?
- 原因:
- 防火墙未开放端口(默认80/443)。
- DNS解析问题(需确保hostname可解析)。
- 解决:
bash示例:
# 检查服务状态
docker ps -a | grep harbor
# 查看日志
docker logs harbor-core
(2)、镜像推送时提示权限不足?
- 原因:
- 用户未被分配项目权限。
- 未登录Harbor或密码错误。
- 解决:
bash示例:
docker logout your-harbor-host:port
docker login your-harbor-host:port -u admin -p your_password
(3)、如何启用漏洞扫描?
- 步骤:
- 在Harbor Web界面启用Clair组件。
- 进入项目设置,开启漏洞扫描策略。
- 推送镜像后,查看扫描结果。
8、总结
- Harbor是企业级容器镜像管理的首选解决方案,通过权限控制、安全扫描、镜像复制等功能,解决了Docker Registry的不足。
- 适用场景:
- 多团队协作开发。
- 需要严格的安全合规要求。
- 跨数据中心或云环境部署。
- 关键价值:
- 安全可控:漏洞扫描与权限隔离。
- 高效管理:图形化界面与自动化任务。
- 灵活扩展:支持多种存储后端与多云环境。
逆风前行,Dare To Be!!!