为什么我们不支持手工上传镜像
自从我们提供公共镜像库以来,不少同学询问是否支持手工上传镜像到镜像库。答案是:不支持。
今天给大家聊一聊为什么公共镜像库不应该支持手工上传,主要基于以下几个方面的考量:
Code First
建木作为一个完整实现 GitOps 理念的工具,开发团队在实现任何服务时所秉承和推广的当然也首选 Code First 的方式。
因此,我们提供的公共镜像库与 GitHub 和国内的Gitee都实现了集成,用户授权后可以直接选择代码库中的 Dockerfile 来进行镜像的构建,后续还会完成与更多代码托管平台的集成。
当然也支持根据分支、Tag 等来设置自动构建计划的规则。
一旦使用了 Code First 的方式,用户就无需自己维护构建服务器或者在本地手工进行镜像构建。
镜像的变更与版本记录与镜像构建的过程一一对应,可追溯可审计,完美符合当前主流的工程理念。
便于生成软件物料清单(SBOM)
不提供手工上次镜像的功能的另一个理由是保证公共库镜像的安全性。最近的研究报告显示,恶意镜像已经成为软件供应链攻击中的攻击手段。而软件物料清单(SBOM)是应对软件供应链攻击的工具之一。
什么是 SBOM 软件物料清单 (SBOM) 是一份正式记录,其中包含用于构建软件的各种组件的详细信息和供应链关系。BOM(物料清单)的说法来源于制造业的 MES 系统,简单说就是类似成分列表。当然 BOM 也可以包含层次结构,可以层层包含,列表中的组成部分可以继续拆分为子 BOM。
在最新的 OCI 镜像标准中,已经有了推荐的 SBOM 的描述规范,但是如何生成 SBOM 并且进行可信的数字签名对于大部分用户仍然是个问题。
因此,建木 Hub 后续也将在镜像构建过程中增加相关的支持来降低针对公共镜像的软件供应链攻击风险。
上行带宽占用
众所周知,维护一个公共镜像库需要相当高的成本。因此建木 Hub 目前使用了 CDN 来优化镜像下载速度和降低镜像下载的流量成本,但是如果开放手工 Push 镜像功能,对于上行带宽和流量的成本暂时还没有好的优化方案。
总结
基于以上考量,建木 Hub 的公共镜像仓库不会开通手工上传镜像的功能。当然,随着产品的迭代完善,我们将会在私有镜像仓库中提供手工上传镜像的功能。如果大家确实需要,敬请期待。
镜像服务体验链接:https://url.dghub.cn/oqhvlg
也欢迎各位小伙伴给我们提出意见反馈,微信扫码加入用户群~
系列文章:为什么我们提供了新的公共镜像库
版权声明: 本文为 InfoQ 作者【Jianmu】的原创文章。
原文链接:【http://xie.infoq.cn/article/29359651eca2cb5aa20fb227e】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论