k8s朋友圈(四)Harbor

Kubernetes启动的容器之前需要先从镜像仓库拉取镜像,如果是企业私有化部署Kubernetes,为了安全和性能考虑都会搭建私有的镜像仓库。一个支持多租户的镜像仓库是必须的,VMware开源的Harbor是最常用的镜像仓库。在2018年Harbor(https://github.com/goharbor/harbor)也成功加入CNCF成为孵化项目。目前已经顺利毕业成为唯一一个国内主导的CNCF毕业项目。

Harbor是一个集成Docker Registry的镜像仓库,主要有三个组件:Core Service、Job Service和Admin Service,其中Core Service主要负责API和认证,核心API包括项目管理、镜像仓库管理、镜像管理。Job Service是负责定时任务管理,通过内部维护的状态机,完成镜像在多个Harbor仓库之间的同步。Admin Service是一个系统配置中心,维护整个系统系统核心配置参数。

k8s朋友圈(四)Harbor

除此之外Harbor还集成了原生的Docker镜像仓库Docker Registry,负责镜像的存储;集成了Clair负责镜像扫描,Clair是CoreOS开源的镜像扫描组件,通过获取公网开放的CVE库,检测镜像中的安全漏洞。前端的API Routing路由分发是通过Nginx实现的。

Harbor中的每一个镜像仓库都属于一个项目,镜像的命名包含了项目名称和镜像仓库名称,格式如下:

reg.xxxxxx.xxx/base/adxgwdev:20190311175917
镜像仓库域名/项目名称/镜像仓库名称:标签

在Harbor中,每个项目可有三种角色:项目管理员(project admin)、开发者(developer)和客人(guest)。其中访客只具有只读权限,开发者可以上传和下载镜像,项目管理员不仅具有该项目的读写权限,可以管理项目如在项目下添加用户。除此之外在整个系统中,还设有系统管理员,可以维护镜像同步策略、用户增删等权限。Harbor中还支持公共项目如默认创建的Library项目, 可以允许匿名访问,即使用户没有Docker Login也可以访问。

Harbor支持高可用部署,通过将多个Harbor放置到负载均衡器后端,每个Harbor通过对接到MySQL和Redis共享集群的元数据,镜像仓库对接到对象存储上面,从而将Harbor本身做成无状态应用。

k8s朋友圈(四)Harbor

Harbor镜像的删除只是删除镜像的元数据,真实的分层文件仍然存在,如果是Harbor 1.7之前版本需要启动官方推荐的gc镜像删除分层,如果是1.7之后版本Harbor支持在线gc,通过WEB管理页面便可以直接触发gc回收无用的镜像分层。

Harbor的另一个亮点是它的镜像复制功能,在多机房部署的场景中,镜像需要在多个镜像仓库之间相互复制。Habor提供了多个镜像仓库复制功能,用户可以选择某个项目复制到指定的远程仓库,触发模式括了手动、定时和即刻。Habor的镜像复制基于Docker Registry API,内部通过状态机维护镜像推送状态,首先通过本地仓库API获取镜像的元数据manifest,从而获取分层的hash,校验镜像分层是否已经在远程仓库存在,如果不存在则推送到远端仓库,最后上传元数据,完成镜像推送。关于镜像格式参见之前介绍OCI的文章。

展开阅读全文

页面更新:2024-02-24

标签:均衡器   公网   在线   开发者   朋友圈   仓库   组件   权限   管理员   核心   状态   名称   项目   数据   用户   系统   科技

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top