本文首发于公众号 亨利笔记( id:henglibiji )。
本文根据徐天行的英文博客改写,感谢 Harbor 项目 maintainer 王岩提供中文界面截图, Cao Zhenhui 提供翻译帮助。
Harbor 1.9 版正式发布了!新版本彰显开源社区通力合作的成果,来自奇虎360、网易云、VMware、灵雀云、才云和 Hyland 软件公司的贡献者倾力打造了社区期待已久的新功能,是广大 Harbor 用户的一大福音。
社区成员参与 Harbor 1.9 开发
Harbor 1.9 为镜像生命周期管理引入了若干崭新功能:tag 保留和配额、可与 CI/CD 工具集成的 Webhook 通知、数据复制、Syslog 集成以及 CVE 例外策略等安全功能。
另外,新版本还修复了一些安全漏洞,建议在生产系统使用 Harbor 的用户检查受影响情况并考虑升级。
下面,我们将深入介绍其中的一些功能。
Webhook
现代应用往往由多个系统组成,系统之间常用松耦合的异步消息机制传递事件,使一个系统可触发另外一些系统的事件响应动作。通知机制是普遍使用的事件传播方式,就是我们常说的“有事你call我”的做法。
Harbor 1.9 增加了 Webhook 的通知机制,可把 Harbor 中的项目与其他系统集成在一起。简而言之,如果您注册了 Webhook 端点,Harbor 会就把该项目中发生的某些事件向 Webhook 端点发出通知。这类事件包括推送、拉取、删除镜像和 Helm Charts、镜像扫描及发现漏洞等。
Webhook 的端点应配备一个操作侦听器,用于解析 Harbor 发来的 JSON 格式的消息数据,并对其所含信息采取相应的操作。例如,用户可为 CI/CD 系统配置一个 Webhook,当镜像被成功推送到 Harbor 之后,触发 Kubernetes 应用程序的部署,以执行测试套件,或者仅仅更新相应的 CMDB。
配额 (Quotas)
组织里面可能有多个团队共享一个 Harbor 实例,这会涉及到团队间资源共享和分配到问题。配额功能就是对存储资源的使用加以控制。具体而言,用户可以限制每个项目所含tag的数目,以及项目可占用的存储容量。管理员既可以设置适用于所有项目的全局默认配额,也可以为个别项目设置配额以覆盖系统设置。
镜像容量会根据其实际大小进行计算,并会考虑所有多个相关镜像之间的层(blob)共享情况。配额可以与其他机制无缝协调工作,例如重新tag、在线垃圾数据回收和保留策略,从而可始终合理管理各个工件,并且不会浪费空间。
存储配额达到之后,项目将无法容纳新的镜像,这时需要删除一些不再使用的镜像,可以借助tag 保留功能实现自动清理(见下文)。
Tag 保留 (Tag Retention)
除了项目配额之外,1.9 版还提供了一项增强功能,用于更好地管理镜像生命周期并优化存储分配,此项功能称为“Tag保留”。Harbor 的存储中可能会迅速累积起大量镜像的文件,特别是在 Harbor 与 CI 系统挂钩在一起以自动生成中间或者内部版本时,许多 tag 会在一定时间之后或被下一个内部版本取代后过时。
如果不定期删除失效的镜像,存储空间可能很快会不耗尽。为此,要释放这些已过期的镜像所占用的空间,并满足监管与合规要求,项目管理员可以选择性地定义镜像 tag 的保留策略,以留存具有特定匹配镜像 tag 的镜像,同时删除其他 tag 及其关联的 Blob。无论是手动生成还是从 CI/CD 管道自动生成,镜像tag通常包含环境和镜像使用情况的大量元数据信息,足以用作定义保留策略的条件。
CVE 例外策略 (Exception Policy)
目前,Harbor 会对某些镜像的拉取 (pull) 加以限制,主要是那些被安全策略进行了漏洞 (CVE) 扫描,且结果符合限制条件的镜像(例如含义严重级别漏洞的镜像)。为了对的某些 CVE 的情况进行例外处理,例如,忽略低严重性 CVE 或当前无解决方案的 CVE,Harbor 1.9 为管理员引入了一项功能,使其可以创建一个 CVE 白名单,从而允许这些镜像在有限的时间段内运行,而不管是否具有特定 CVE 安全漏洞 。系统管理员可以创建一个对所有项目都有效的全局 CVE 白名单,而项目管理员则可以在单个项目级别进一步细化此白名单。
内容复制的增强
1.8 版推出了在 Harbor 与其他Registry(例如 Docker Hub 和 Huawei Cloud)之间进行跨 Registry 内容复制的功能,而 1.9 版对这些功能进行了扩展,使其可用于大多数主流云提供商的 Registry,例如 AWS ECR、Azure ACR、GCP GCR 和 Aliyun ACR。尽管并非所有 Registry 都提供相同的功能集,但 Harbor 可实现与第三方 Registry 的无缝双向复制,以满足客户的众多需求和用例。
用户以后要迁移镜像到 Harbor 就很方便了,直接把别处的镜像复制过来就好了。
欢迎社区参与
与以往相比,1.9 版得到了社区更多的支持与参与,无论是功能测试、缺陷报告、需求共享、企业 Registry 最佳实践,还是及时地提供高质量的代码,社区的贡献不容忽视。截至本文章发布时,我们已开始着手开发 1.10 版。其主要功能包括:可即插即用的第三方镜像扫描器(如 Aqua 和 Anchore)、创建 Harbor Operator以提高部署的智能化水平以及不可变的镜像tag(即锁定)。
欢迎到 Harbor 项目看板 (github.com/orgs/goharbor/projects/1),及时了解正在开发的版本的最新动态,并确定有意参与的领域。参与形式可以是提供方案需求、测试、文档、缺陷修复或为 Harbor 引入新功能等。
本文部分内容翻译自 VMware 产品经理徐天行的英文博客。
英文原文:https://blogs.vmware.com/cloudnative/2019/09/19/harbor-1-9-multi-tenancy-enterprise-features/
要想了解更多云原生和人工智能等技术原理,请立即长按以下二维码,关注本公众号亨利笔记( id:henglibiji ),以免错过更新。