港口-开箱即用的Docker容器的注册表

7月31日,CNCF 宣布在其沙盒(即最早的支持阶段)中采用了一个新的开源项目,称为“云本机注册表”。 他们在他的网站上向我们解释说,该产品是为了在安全的环境中管理Docker容器的映像而创建的。



似乎已经有一个Docker Registry(或者说是CoreOS的Quay),但是很明显,新的解决方案没有出现并且没有像这样成熟到生产使用-尤其是开源解决方案...甚至更多, CNCF。 这篇评论文章旨在阐明Harbor出现的原因,其主要特征和功能。

港湾的首要重点:网络和企业


该项目的历史始于2016年,3月首次公开发布-0.1.0。 VMware工程师支持该项目的创建,后者将该项目描述为“企业级注册表服务器”,它基于Docker的发展,“通过添加企业中通常需要的更多功能来扩展Docker Registry的功能”。

当时,重点更多地放在公司内部使用此注册表的可能性上,特别是通过将映像存储在公司网络上来潜在地提高生产力:“ [Harbor]对于没有良好Internet连接的容器用户非常有用。 例如,Harbour消除了从公共Internet下载图像的麻烦” (从README到Harbor 0.1.0 ,从而提高了中国开发人员的生产力。

注意 :从最初的发行版开始就已经存在适当的本地化,这证实了Harbour面向中国的方向并非偶然:该项目的创建是由公司的中国部门(VMware China R&D) 发起的

在原生云环境中,Harbor从一开始就使用Go语言编写,并根据Apache License 2.0的条款获得许可。 如果我们谈论项目的功能,那么在第一个版本中,作者到目前为止已经列出了一些相关功能,例如:

  • 基于角色的访问控制( RBAC ,它使您可以将用户和存储库组织为“项目”,并对这些项目中的图像赋予不同的权限),以及用于用户身份验证的LDAP和AD支持;
  • 基于Web的用户界面,用于查看存储库,搜索存储库,管理项目;
  • 审核所有操作;
  • REST API进行管理。


Harbor Web UI中的项目管理

港口演变:安全


2017年,VMware在其新项目中找到了合乎逻辑的应用程序-与其他公司的容器解决方案集成。 特别是,不是集成的 PaaS(平台即服务)或CaaS(容器即服务)的vSphere Integrated Container (VIC)正在积极开发中,为使用容器提供了某种基础。 如今,例如, vSphere Integrated Containers EnginevSphere的容器运行时)已经从中脱颖而出。 这是VMware(Nate Reid)解决方案工程师当时对VIC的描述:

“ VIC采用单个Docker主机的框架,并将其扩展到多个ESXi主机。 他提出的业务流程架构类似于Swarm,Kubernetes(K8s)和Mesos。 但是,有一些细微差别,因此没有取代所有这些产品的任务。 VIC提供了用于容器的网络,允许您获取容器的名称,提供RBAC,HTML5控制面板(海军上将;在Docker的GUI审查中了解有关此内容的更多信息-Transl。 ),企业级注册表(Harbor),许多类似的Docker命令,与vSphere工具集成。 [..]

如果您需要Kubernetes编排支持和/或VMware的基于VMware IaaS的CI / CD功能,则应查看VMware PKS和/或Pivotal Cloud Foundry。 这些已经是CaaS和PaaS解决方案。”

同时,Docker映像安全性问题变得越来越重要。 在2018年初,VMware公司Pivotal的“兄弟”工程师引用一项研究 ,该研究表明 ,即使在Docker Hub上发布的最新版本的映像(来自社区和官方)也包含众多漏洞(每个映像平均70个)。

那时,Harbour出现了其以安全为导向的新使命,并且已经在上述的CaaS的“基础”上–在Pivotal Container Service(PKS)中

“ [[Docker映像中的漏洞和其他安全问题]是我们包含如此众多有用的附加组件的原因,这些附加组件使PKS可靠且安全!” [..]

由于仅Kubernetes不能解决此类问题(安全映像管理),所以我们与VMware的朋友一起将Harbor纳入PKS。”

除了在项目中已经实施的RBAC和审核之外,对Harbour而言,有什么安全的补充? 指出了两个主要方向:

  1. 漏洞扫描 为此,Harbor从知名数据库(NIST NVD,Ubuntu CVE Tracker,Red Hat Security Data等)实现CVE,并在执行推和拉操作时自动扫描每个容器映像是否存在。 如果发现漏洞,则将根据安全设置取消操作,并标记图像本身,这对于注册表管理员来说是可见的。 为了实现这一机会,Harbour与CoreOS的Clair 集成
  2. 图像的签名 。 它还使用了另一个项目的成就-Notary (我们在本文中提到过) ,该项目在推送图像时进行签名,然后在每次拉动时验证此类签名。

Harbour在PKS中的一般应用如下:



今日港


因此,通过提供用于本地使用的容器映像的注册表并在与它们一起使用的各个方面提供安全性,如今Harbor已发展为以下架构,该架构显然结合了其他开源项目的功能:



除了已经提到的实现了Harbor关键功能的Docker Registry,Clair和Notary之外,您还可以在此方案中看到两个DBMS:

  1. PostgreSQL( 以前是 MySQL / MariaDB),用于存储有关项目,用户及其角色,图像的元数据;
  2. Redis-用于存储会话


港口建筑中的数据库

您还可以从此Wiki页面上 找到有关通用Harbor内部设备的一些详细信息该页面链接到项目的官方文档 (但是,怀疑该体系结构的某些详细信息在某些地方可能已过时) 。 在这里,您还可以找到指向Harbour安装说明并将其部署到Kubernetes的链接 。 但是,后者被宣布已作废(基于旧版本,不支持Clair和Notary),而是建议使用Helm-chart

Harbor的当前版本是v1.5.2 ,已于7月下旬发布。 安装最新注册表版本的Linux机器的要求是Docker版本17.03.0-ce(或更高版本)和Docker Compose 1.10.0+,以及Python和OpenSSL。

支持Helm图表对于未来的Harbor版本(已经发布了v1.6.0-rc1 )来说似乎是一个非常有趣的创新:“从1.6.0版本开始,Harbor将会成为一个复合云原生注册表,同时支持图像管理和图表管理” 。 其他开发计划包括OAuth 2.0支持用户身份验证,能够部署到多个站点以实现容错和负载平衡,收集存储库统计信息以及用于迁移到Harbor的实用程序的能力。

而不是结论


Harbor是现代云世界中一个成功项目的一个示例,该项目设法找到了自己的优势并建立了自己,同时集成了其他开源工具的功能。 他成功的证据不仅是将CNCF包含在项目列表中,还包括GitHub上的 5000颗星,以及一个相当活跃的开发者社区。

聚苯乙烯


另请参阅我们的博客:

Source: https://habr.com/ru/post/zh-CN419727/


All Articles