Harbor搭建(一)

2018-09-04  本文已影响0人  荒原_狼

背景

Docker Registry 作为镜像仓库,没有管理界面,使用起来不方便,还有什么 Docker 镜像仓库管理工具呢?这里有一个简单好用的企业级 Registry 服务器 - Harbor。

Harbor介绍

Harbor是VMware公司开源的企业级Docker Registry项目,其目标是帮助用户迅速搭建一个企业级的Docker registry服务。

基于官方 Registry V2 实现,提供了管理UI,基于角色的访问控制(Role Based AccessControl),AD/LDAP集成、以及审计日志(Auditlogging) 等企业用户需求的功能,通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源 Docker Distribution。

作为一个企业级私有 Registry 服务器,Harbor 提供了更好的性能和安全。提升用户使用 Registry 构建和运行环境传输镜像的效率。

Harbor 支持安装在多个 Registry 节点的镜像资源复制,镜像全部保存在私有 Registry 中,确保数据和知识产权在公司内部网络中管控。另外,Harbor 也提供了高级的安全特性,诸如用户管理,访问控制和活动审计等。

Harbor 是由 VMware 中国研发团队负责开发的开源企业级 Docker Registry,不仅解决了我们直接使用 Docker Registry 的功能缺失,更解决了我们在生产使用 Docker Registry 面临的高可用、镜像仓库直接复制、镜像仓库性能等运维痛点。

Harbor特性

Harbor架构

架构中涉及模块有:

这几个 Contianer 通过 Docker link的形式连接在一起,在容器之间通过容器名字互相访问。对终端用户而言,只需要暴露 proxy(即 Nginx)的服务端口。

Proxy

Harbor 的 registry、UI、token等服务,通过一个前置的反向代理统一接收浏览器、Docker 客户端的请求,并将请求转发给后端不同的服务。

运行容器 proxy: 由 Nginx 服务器构成的反向代理。

Registry

负责储存 Docker 镜像,并处理 docker push / pull 命令。由于我们要对用户进行访问控制,即不同用户对 Docker image 有不同的读写权限,Registry 会指向一个 token 服务,强制用户的每次 docker pull / push 请求都要携带一个合法的 token,Registry 会通过公钥对 token 进行解密验证。

运行容器 registry:由 Docker 官方的开源 registry 镜像构成的容器实例。

Core services

这是 Harbor 的核心功能,主要提供以下服务:

UI:提供图形化界面,帮助用户管理 registry 上的镜像(image),并对用户进行授权。
webhook:为了及时获取 registry 上 image 状态变化的情况,在 Registry 上配置 webhook,把状态变化传递给 UI 模块。
token 服务:负责根据用户权限给每个 push / pull 请求签发 token。Docker 客户端向 Registry 服务发起的请求,如果不包含 token,会被重定向到这里,获得 token 后再重新向 Registry 进行请求。

运行容器 UI:即架构中的 core services,构成此容器的代码是 Harbor 项目的主体。

Database

为 coreservices 提供数据库服务,负责储存用户权限、审计日志、Docker image 分组信息等数据。

运行容器 mysql:由官方 MySql 镜像构成的数据库容器。

Job Services

提供镜像远程复制功能,可以把本地镜像同步到其他 Harbor 实例中。

运行容器 job services:通过状态机机制实现远程镜像复制功能,包括镜像删除也可以同步到远端 Harbor 实例。

Log collector

为了帮助监控 Harbor 运行,负责收集其他组件的 log,供日后进行分析。

运行容器 log:运行着 rsyslogd 的容器,通过 log-driver 的形式收集其他容器的日志。

上一篇 下一篇

猜你喜欢

热点阅读