前言
腾讯企业云中心使用Harbor作为统一的镜像仓库管理组件,本文主要分享企业云中心在Harbor上的一些实践经验总结……
harbor介绍
Harbor是目前最流行的开源企业级镜像仓库解决方案。除了原生支持镜像仓库,chart仓库;还支持一些企业用户所迫切需要的一些功能,例如:图形用户界面、完善的认证和鉴权机制、镜像复制、镜像病毒扫描、镜像删除与垃圾回收机制以及RESTFUL API接口等。另外,它也易于部署,目前支持两种部署方式:Docker-Compose
以及Helm Chart
harbor API无侵入改造
Harbor支持丰富的RESTFUL API接口。企业平台可以调用这些API完成绝大多数的需求,但是随着需求复杂度的增加,这些API就不能完全满足企业的需求了。比如:Harbor只提供获取指定Project对应的Repository查询接口
,但是企业可能需要在不指定Project的情况下获取相应查询字段的Repository接口
,类似这种情况下,Harbor API接口就显得不够用了,那么如何适应业务的这些需求?
这里有两种方式进行适配:
- Internal:通过修改Harbor内部代码,修改和添加Harbor API接口,实现API适配
- External:Harbor外部添加一个适配器,所有适配操作通过Adapter来进行,无需修改Harbor
这两种方式各有优缺点:
-
Internal
- 优点:直接,效率高
- 缺点:修改了Harbor源码,对于Harbor的升级来说不易维护
-
External
- 优点:对Harbor零侵入,易于Harbor的升级维护
- 缺点:多了一个中转和拼接,效率差;有些添加、修改Harbor原有表结构并对这些结构操作的API不适合这种方式
在对比了这两种方式的优缺点后,我们选择用第二种方式进行适配,原因很简单:在允许一定效率损失的情况下,通过Harbor Adapter无侵入改造Harbor API,对Harbor更加友好,有利于Harbor的升级与维护
harbor认证&鉴权 无侵入改造
Harbor对认证和鉴权支持得比较完善。Harbor主要支持三种认证方式:
- Database(PostgreSQL)——Users are stored in the local database
- LDAP——Under this authentication mode, users whose credentials are stored in an external LDAP or AD serve