题图摄于蒙特雷渔人码头:Harbor House
相关文章:
Harbor技术书征集内容和用户体验反馈
运维 Harbor 镜像仓库的法宝:Operator
开源镜像仓库 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)。(本文来自公众号:亨利笔记, henglibiji )
Harbor 符合 OCI 规范的另一个好处是:能够完全处理 OCI 索引。OCI 索引是一个高层次的清单,代表着一组绑定的镜像,非常适合多体系架构(如 i386 和 arm64v8,Linux 和 Windows 等)的场景。例如,在 X86 架构的 Windows 和 ARM 架构的 Linux 上,只需要同样的命令即可运行 Nginx 服务:
docker run -d nginx
用户无需指定操作系统和平台,可完全依赖客户端来确保获取正确镜像的版本,就酱简单。这种索引已经被 CNAB 等工具广泛利用来管理与云平台无关的分布式应用程序。
Harbor 新增的 OCI 功能,并不影响现有用户的使用。 大家所有熟悉的 Harbor 功能都做了OCI 的适配。对 OCI 的工件,用户可以像处理镜像一样推送、拉取、删除、重新标记、复制、扫描和签名索引。漏洞扫描和项目策略(用于加强安全性和合规性的关键要素)经过改进,适用于 OCI 工件。
Harbor 还提供了一项新的重要功能:可以删除镜像的 tag,而无需删除对应的清单(manifest)和所有其他关联的镜像 tag 。还可以查看没有 tag 的镜像,并可选择将其排除在垃圾回收之外。(本文来自公众号:亨利笔记, henglibiji )
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 还继续支持 Clair 作为内置镜像扫描器。实际上,现有 Harbor 版本升级到2.0 后,原先使用 Clair 扫描的项目将会继续使用 Clair;Trivy 仅作为新部署的 Harbor 2.0 实例的默认扫描器。
其他改进
根据用户的反馈,Harbor 改进了机器人帐户功能(robot account),使其更符合常见的使用模式。Harbor 2.0 允许每个机器人帐户单独设置失效日期,而不再需要系统全局设置。在未来的版本中,机器人帐户将可适用于一个或多个项目,并将为 Kubernetes 部署提供更好的认证凭证处理。
Harbor 2.0 的另一个新功能是为核心服务配置 SSL,各内部服务之间使用加密的通信方式。此功能增强了安全度,并降低了中间人攻击的可能性。(本文来自公众号:亨利笔记, henglibiji )
新版本中 webhooks 可以单独触发,并能够发送通知到 Slack 即时通讯软件。有些用户可能不想接收所有 webhook 操作的回调,他们可在项目上配置需要接收的webhook 动作和回调方法( HTTP 或 Slack )。
Harbor 2.0 界面中带来了全新的暗模式,适合弱光环境下使用。欢迎下载 Harbor 2.0 并告知你的使用体验!
(本文改写自徐天行的英文博客:
https://goharbor.io/blog/harbor-2.0/ )
好消息
作为中国首个 CNCF 开源项目, Harbor 受到用户的广泛使用和支持。