big boss

个人签名

8篇博客

云原生当道,Harbor高可用高性能镜像仓库方案多

big boss2019-10-31 10:45

10月26日,由VMware和网易云主办的第二场Harbor技术沙龙杭州站活动圆满结束,来自阿里云、天玑科技、VMware、网易云等多位社区技术专家现场分享了Harbor的应用与实践,Harbor项目的Maintainers还为大家介绍了Harbor项目的最新进展,现场参会者与技术专家们进行深入技术交流。(PPT可在文末附件区域下载)



Harbor维护者、VMware云原生应用部门高级工程师邓谦向大家更新了Harbor社区最新状况,概述Harbor 1.9版本的主要功能,并提前揭秘了Harbor 1.10 版本的部分最新功能。Harbor目前在Github上已经获得超过9600个Star,14名维护者、128名贡献者,主要来自VMware、网易杭研等机构。Harbor 1.9版本提供了Webhook、配额管理、Tag保留、CVE例外策略和内容复制增强等功能。其中Webhook便于与外部CI/CD系统集成,Webhook启用的事件将会以JSON格式对外发布;配额管理为项目提供基于容量的访问控制,支持基于Tag数和存储容量的配额策略;Tag保留对工件提供更好的存储管理,支持配置多条保留策略。


Harbor维护者、网易杭研云计算技术部资深开发工程师裴明明分享的是Harbor如何与网易轻舟微服务平台相结合,如何充分使用Harbor的各项功能,打造一套企业级解决方案。轻舟是支撑网易严选、云音乐等核心业务的微服务平台,以Harbor、Docker、Kubernetes作为基础设施,提供微服务覆盖应用全生命周期的能力。网易杭研通过Harbor将容器镜像仓库与轻舟平台的权限、模型结构对接,便于管理和使用。通过与Kubernetes、Prometheus等云原生技术的深度整合,以及各种参数优化等,网易杭研实现了基于本地文件系统、基于对象存储的高可用高性能镜像仓库解决方案。优化过后,大幅度提升镜像仓库镜像分发的能力,网络带宽等资源限制不再成为镜像分发的瓶颈。


天玑科技云计算架构师慕世勋向大家分享了他的团队在镜像库方面所积累的多年实践经验,以及如何建设一个企业级镜像库。该团队着眼于高可用、性能、镜像规范等,实现了高可用、镜像一致性、大并发镜像pull处理能力以及运营数据可视化等能力。通过双主复制方案、共享存储方案乃至多中心异地容灾实现Harbor高可用架构。镜像和文件分发管理采用DF P2P方案,同时支持文件和镜像下载,支持Mesos、Kubernetes集群,实现主机自动发现,并提供MD5校验功能保障文件完整性。



作为Dragonfly的主要开发者以及Maintainer之一,阿里云智能开发工程师刘裕惺介绍了通过Dragonfly与Harbor相结合提高镜像分发效率的技术,并通过Demo展示了Dragonfly对Harbor镜像分发效率的提升效果。Dragonfly是一个开源的P2P镜像与文件分发系统,其目标是为了解决云原生场景所有的文件分发问题。Dragonfly通过P2P技术解决镜像仓库的带宽瓶颈问题,充分利用各个Peer的硬件资源和网络传输能力,实现规模越大传输越快的效果,并结合CDN技术规避重复下载,解决远距离传输问题。


网易杭研云计算技术部资深解决方案架构师张亮在演讲中列举了镜像仓库在应用部署环节中的一些常见问题,介绍了当前业界提供的一些方案,为解决大规模镜像分发提供了思路。微服务环境下,越来越多的应用进行容器化,容器集群的规模在不断扩大,镜像仓库逐渐成为应用部署环节中的瓶颈,下载慢、带宽瓶颈、镜像仓库节点网卡打满等问题越来越常见。横向扩展registry能解决部分问题,但针对读同一份文件的场景,后端存储横向扩展不能解决问题。对此目前业界有Harbor横向扩展+复制、Dragonfly、Kraken、Quayctl(BT+quay)等方案,网易轻舟微服务采用基于Kraken的方案,Harbor和Kraken共用registry,使用Harbor管理,使用Kraken分发,实现镜像推送到Harbor之后kraken的自动预热功能,并支持P2P和非P2P方式分发,同时后端使用网易云对象存储NOS,这样来解决镜像大规模分发的性能问题。


VMware云原生部门资深工程师姜坦向大家详细介绍了Harbor 1.10版本中的部分新功能,以及Harbor路线图 & 社区发展,并呼吁社区里的“攻城狮”们多提出自己的想法,为社区发展贡献力量。Harbor 1.10版本的主要新特性,包括可插拔安全扫描器、OIDC group支持、不可变仓库等。其中可插拔安全扫描器与Clair松耦合,支持Anchor、Aqua、trivy等第三方安全扫描服务集;OIDC group支持在OIDC配置中声明组,且组与成员有同等的权限;不可变仓库的核心,是仓库内容不可修改,和不可变仓库策略。