Harbor 2.0 的飞跃: OCI 兼容的工件仓库
题图摄于蒙特雷渔人码头:Harbor House
相关文章:
开源镜像仓库 Harbor 2.0 正式发布了!从 2017 年 4 月发布 1.1 版本算起,经过整整 3 年,Harbor 的版本号终于 “升” 到 2.x 了。当然了,Harbor 2.0 不仅仅是大版本数字跃升那么简单,还给带来了众多重要更新,涉及代码多项重构,凝聚了项目组艰辛的付出。Harbor 2.0 成为符合 OCI(Open Container Initiatives)规范的开源镜像仓库,能够存储多种云原生工件(Artifacts),例如,容器镜像、Helm Chart、OPA、Singularity 等等。
关于 OCI
我们先说说什么是 OCI ,然后看看 Harbor 2.0 的新功能意味着什么。
成立于 2015 年的 OCI 是 Linux 基金会旗下的合作项目,以开放治理的方式制定操作系统虚拟化(特别是 Linux 容器)的开放工业标准。
OCI 已经制定了业界的容器运行时(runtime)规范和容器镜像规范,还有一个正在制定的镜像分发(distribution)规范。OCI 的指导思想是先有工业的实践,再总结成技术规范,例如,像 Docker 镜像格式已经广泛被用户接受之后,OCI 在此基础上制定了容器镜像格式的规范。(本文来自公众号:亨利笔记, henglibiji )
总体上说,OCI 提出的两个规范(镜像和运行时)是互相关联的。镜像规范定义镜像的组成,包括文件格式和内容、清单(manifest)、镜像索引(可选)、文件系统的分层和配置文件。然后,OCI 运行时将依据该配置,创建容器来运行程序。换句话说,镜像规范有助于创建可互操作的工具,以构建、传输和准备要运行的镜像,而运行时规范规定了容器的配置,执行环境和生命周期。
OCI 规范有助于使开发者和工件仓库(如 Registry)支持和遵循同一个通用标准。作为开发人员,现在可采用 OCI 标准来开发工件,并且确保工件可以被 Harbor 等 OCI 兼容工件仓库来保存。
在 Harbor 中支持 OCI 兼容镜像意味着支持其 API 集并解释关键信息,包括 OCI 的模式和媒体类型,从而确定哪些内容可以被推送到 Harbor 。例如,工件的 manifest.config.mediaType 属性对于在 Registry 中标明自身类型至关重要,而 layer.mediaType 定义了要存储并持久化的文件层,而无需 Registry 预先拉取并解拆这些文件层。
举个例子,通过 Helm3 可将 Helm Chart 推送到 Harbor。 在 Harbor 2.0 中,Helm Chart 不再存储于 ChartMuseum 中,而是与容器镜像一样存放在工件文件中。在下图中,我们看到了在同一项目中包含的不同工件:容器镜像,Helm Chart 和 CNAB(Cloud Native Application Bundles)。
Harbor 还提供了一项新的重要功能:可以删除镜像的 tag,而无需删除对应的清单(manifest)和所有其他关联的镜像 tag 。还可以查看没有 tag 的镜像,并可选择将其排除在垃圾回收之外。(本文来自公众号:亨利笔记, henglibiji )工件类型无疑会不断演变, 对 Harbor 至关重要的一个原则是不与任何特定容器格式锁定,从而具有足够的灵活性,以便根据社区需求,支持或放弃某种工件类型。
Aqua Trivy 作为默认漏洞扫描器
Harbor 2.0 用 Aqua 的 Trivy 代替了 Clair ,成为缺省的镜像漏洞扫描器。Trivy 使容器镜像扫描比之前有了更高的可用性和性能。自从在 Harbor 1.10 中的可插拔扫描框架添加了 Trivy 以来,Trivy 成为 Harbor 的完美补充,项目组收到了很多反馈,并在社区中获得了越来越多的关注,。
Trivy 具有广泛的覆盖范围,可扫描不同的操作系统和软件包管理器,并且易于集成到 CI / CD 系统中。Trivy 还会进行深度扫描,可发现 CentOS,Photon OS,Debian 和 Ubuntu 等流行发行版中的漏洞。(本文来自公众号:亨利笔记, henglibiji )
其他改进
根据用户的反馈,Harbor 改进了机器人帐户功能(robot account),使其更符合常见的使用模式。Harbor 2.0 允许每个机器人帐户单独设置失效日期,而不再需要系统全局设置。在未来的版本中,机器人帐户将可适用于一个或多个项目,并将为 Kubernetes 部署提供更好的认证凭证处理。Harbor 2.0 的另一个新功能是为核心服务配置 SSL,各内部服务之间使用加密的通信方式。此功能增强了安全度,并降低了中间人攻击的可能性。(本文来自公众号:亨利笔记, henglibiji )
新版本中 webhooks 可以单独触发,并能够发送通知到 Slack 即时通讯软件。有些用户可能不想接收所有 webhook 操作的回调,他们可在项目上配置需要接收的 webhook 动作和回调方法( HTTP 或 Slack )。
(本文改写自徐天行的英文博客:https://goharbor.io/blog/harbor-2.0/ )
Harbor 社区联系方式
双周例会,周三晚 9 点(中英文):
https://github.com/goharbor/community/blob/master/MEETING_SCHEDULE.md
Email 组:
harbor_dev @ lists.cncf.io , harbor_users @ lists.cncf.io
微信公众号:HarborChina (官方公众号)
GitHub: Github.com/goharbor
要想了解更多云原生和人工智能等技术原理,请立即长按以下二维码,关注公众号亨利笔记,以免错过更新。
版权声明: 本文为 InfoQ 作者【亨利笔记】的原创文章。
原文链接:【http://xie.infoq.cn/article/62c6f852f317d9f6ad79322be】。文章转载请联系作者。
评论