https://www.redhat.com/en/blog/red-hat-introduces-open-source-project-quay-container-registry

今天,红帽推出了Quay项目的开源项目,该项目是代表Red Hat Quay和Quay.io的代码的上游项目。根据Red Hat的开源承诺,Project Quay是新开源的,代表了自2013年以来CoreOS(现在是Red Hat)围绕Quay容器注册表进行的多年工作的高潮。


Quay是市场上第一个私人托管注册中心,于2013年底启动。由于专注于开发人员的经验和高度响应的支持以及image回滚和零停机垃圾收集等功能,它吸引了越来越多的用户和兴趣。 Quay于2014年被CoreOS收购,以加强其通过自动化运营保护互联网的使命,而在CoreOS收购之后不久,Quay的本地产品发布了。该产品现在称为Red Hat Quay。


Quay团队还自2015年以来创建并整合了Clair开源容器安全扫描项目,如今包括Red Hat以及社区维护者和用户。


从今天开始,随着Quay和Clair代码库现在作为Project Quay开源,我们相信这些项目将使云原生社区受益,从而降低围绕容器创新的障碍,从而帮助使容器更加安全和可访问。开源是Red Hat所信奉的核心部分,我们为达到为开放社区准备项目的时刻而感到自豪。如前所述,开源软件激发了开发人员的精力。并行工作的团队可以超越上一代的大型开发层次结构。我们认为,与开源社区上游合作是一项重要的创新策略。


Project Quay中有什么

今天发布的Project Quay代表了Quay应用程序代码库的开源,包括构建,部署和运行完全开源的Quay发行版所需的工具。


Quay和Clair一直以来都是紧密配合的项目。 Clair启用了Red Hat Quay中的容器安全扫描功能,该功能可帮助用户识别其容器注册表中的已知漏洞。 Clair是在开源社区中创建的,旨在通过供应商和用户之间的开放工作来提高安全性。考虑到不断增长的安全需求,Clair也直接内置在Project Quay中。


Project Quay包含一系列在Apache 2.0和其他开源许可证下许可的开源软件。它遵循一个带有维护者委员会的开源治理模型。


对于Red Hat Quay和Quay.io用户

通过开放社区,Red Hat Quay和Quay.io用户可以从上游代码的协作中受益。


展望未来,Quay.io和Red Hat Quay将在Quay项目中完成工作,而Quay.io将在上游项目中构建并部署。反过来,根据我们的发布流程,红帽码头将继续由红帽进行管理,构建和发布。


加入社区

我们欢迎并鼓励Quay和Quay.io最终用户以及所有有关方面参加并加入Project Quay。您的反馈和用例对于通知和推动路线图至关重要。在KubeCon NA的项目码头办公时间内,与工程和社区负责人见面。



Quay的功能展示,请参考我之前发表的一篇文章。

一、Quay从哪来到哪去?


Quay从哪来?

2014年8,风头正劲的coreos公司宣布收购私有Docker仓库服务商Quay.io。Quay.io是一个用于托管私有 Docker 仓库的服务。很多 Docker 的开发者一般会使用公有的 Docker 仓库或者构建自己的私有仓库。而 Quay.io 主要是帮助开发者构建私有仓库。而 CoreOS 的收费的受管的 Linux 服务客户将可以使用基于 Quay.io 提供的 CoreOS Enterprise Registry 服务。


红帽宣布发布企业容器仓库开源项目_java


2018年1月30日,RedHat宣布已经签署了收购CoreOS。quay随之被收入囊中。

红帽宣布发布企业容器仓库开源项目_java_02


Quay到哪去?


在过去几年中,许多红帽OpenShift客户已经把CoreOS Quay用作企业注册表(registry)解决方案。那些需要更全面的企业级注册表功能的客户,现在可以选择从红帽获取Quay Enterprise(Quay企业版)和Quay.io。Quay包括自动化的地理复制、与Clair相集成的安全性扫描,以及用于查看历史记录的图像时间机器,而且能够执行回滚和自动修剪(pruning)等。Quay现已被添加到红帽产品组合中,既可以作为企业级软件解决方案来提供,也可以作为Quay.io中的托管服务来提供。预计在未来的版本中,Quay将会有更多增强功能,并持续与OpenShift相集成。


也就是说,最终quay会以pod的方式运行到Openshift上。就像以后的istio一样,成为Openshift的一个组件(具体收费方式目前未知)。



二、Quay目前的部署方式和功能


Quay有基于cloud的方式和基于数据中心内部的方式,前者类似docker hub,后者类似harbor数据中心内部的安装方式:


红帽宣布发布企业容器仓库开源项目_java_03

基于云的方式:

红帽宣布发布企业容器仓库开源项目_java_04

基于企业数据中心的Quay如如下特性:


1.镜像仓库高可用和灾备:数据中心内部HA,在数据中心之间同步镜像

2.支持CI:当开发人员提交代码以后,自动触发代码构建。

3.支持安全扫描:自动扫描容器镜像,以查找已知的安全漏洞。

4.企业认证:集成到现有的身份基础架构:LDAP,Keystone等5.灵活的存储后端:将容器存储在Amazon S3,OpenStack Swift,Google云端存储中,或直接存储到磁盘。6.记录和审计 审计对于CI管道中的所有内容都至关重要。跟踪通过API和UI执行的操作。

红帽宣布发布企业容器仓库开源项目_java_05


红帽宣布发布企业容器仓库开源项目_java_06


目前红帽Openshift有集成镜像仓库docker registry,而Quay刚好可以为Openshift提供数据中心内部公共镜像仓库。后续Quay会作为一个组件,以pod方式运行在Openshift上。


如果本地部署quay,需要做如下步骤:

  • A supported database (MySQL, Postgres)

  • A Redis instance (for real-time events)

  • The Quay Enterprise image


三、基本操作展现


本地部署或者使用云上的quay.io服务,账户登陆以后,首先常见repository:

红帽宣布发布企业容器仓库开源项目_java_07


可以指定是容器镜像仓库还是应用代码仓库,并且可以指定私有还是共有的:


红帽宣布发布企业容器仓库开源项目_java_08

选择谁可以使用这个repository:

红帽宣布发布企业容器仓库开源项目_java_09


创建成功,目前是空的:

红帽宣布发布企业容器仓库开源项目_java_10

查看tag,也是空的:

红帽宣布发布企业容器仓库开源项目_java_11

红帽宣布发布企业容器仓库开源项目_java_12

查看代码构建:

红帽宣布发布企业容器仓库开源项目_java_13

查看日志:

红帽宣布发布企业容器仓库开源项目_java_14

可以进行权限配置:



红帽宣布发布企业容器仓库开源项目_java_15






四、功能展现:源码变更触发自动构建



有一个web应用,原始的页面是:


红帽宣布发布企业容器仓库开源项目_java_16


首先配置webhook:

红帽宣布发布企业容器仓库开源项目_java_17

修改源码:




红帽宣布发布企业容器仓库开源项目_java_18


提交变更:

红帽宣布发布企业容器仓库开源项目_java_19


触发quay中的代码自动构建:


过一会,构建成功:

红帽宣布发布企业容器仓库开源项目_java_20


给新的镜像分配tag:

红帽宣布发布企业容器仓库开源项目_java_21

红帽宣布发布企业容器仓库开源项目_java_22


修改应用的dc,使用新的image,触发应用重新构建:


红帽宣布发布企业容器仓库开源项目_java_23


红帽宣布发布企业容器仓库开源项目_java_24

重新构建完毕后,页面变成:

红帽宣布发布企业容器仓库开源项目_java_25

    



五、功能展现:容器镜像扫描

quay的镜像安全扫描基于clair:


红帽宣布发布企业容器仓库开源项目_java_26

Clair项目是一个开源项目,使Quay Security Scanner能够检测Quay Enterprise中所有图像的漏洞,并在发现这些问题时通知开发人员。


查看quay的镜像扫描结果:

红帽宣布发布企业容器仓库开源项目_java_27

红帽宣布发布企业容器仓库开源项目_java_28

查看漏洞链接的CVE

红帽宣布发布企业容器仓库开源项目_java_29



六、功能展现:HA与异地复制


Quay配置HA的前提是:

  • Postgres或MySQL数据库,具有自动备份和故障转移功能。 

  • 高可用性分布式存储引擎,如Amazon S3,Google Cloud Storage,Ceph RADOS或Swift。不建议在HA设置中使用本地存储和NFS。

  • 运行在中型机器上的Redis服务器。Redis不需要故障转移或备份。

  • 支持TCP直通的负载均衡器。

  • 至少有三台适用于集群的中型机器。


配置异地复制后,容器先push到本地或者位置最近的repo。然后image将在后台被复制到其他repo。复制的规则是可配置的。 


红帽宣布发布企业容器仓库开源项目_java_30