Sigma 一个可以和 Harbor 比一比的镜像仓库!求 Star

user image 发现 ----- 2023-12-27 21:32:01

Sigma 是什么?

Sigma 是镜像制品管理的软件,与 Harbor 和 distribution 有相同的功能,在 UI 易用性上做了很多工作,镜像元数据管理上与 distribution 完全不一样,是自研的一种实现方式,可以使得在镜像清理上可以快速的找到需要被清理的对象,在此基础上 Sigma 的部署可以做到单个二进制文件单个命令启动完整的仓库服务,包括:镜像元数据管理、镜像清理等的异步服务、镜像构建。

为什么自研 sigma ?

开发 sigma 的最初的想法是是降低 Harbor 组件部署的复杂度,并且在高可用的角度又不失其架构优势。sigma 希望在制品元数据管理、权限管理、制品分发、部署和维护容易程度这四个方面都做到最好,并且在一开始设计 sigma 的时候就对这几方面做出思考。

在很多个人用户的使用场景里可能仅仅是需要制品元数据管理友好、UI 易用的镜像仓库、部署和维护简单的镜像仓库,以上他们并不能都完全很好的符合以上特征,并且在镜像仓库中能够加入类似 docker hub 的镜像构建功能将会是一个很受欢迎的功能。在较大的团队中看重的功能会在以上基础上希望镜像仓库是稳定的,并且和已有的系统兼容性好,可以对接团队内已有的 DevOps 系统,sigma 希望可以在这方面更深入的参与到整个 DevOps 流程,而不单单是一个仓库存储的角色。

sigma 的优势

部署架构

sigma 在部署层面上最简化可以做到单文件单个启动命令,将前端、镜像清理和镜像构建等异步任务服务以及镜像元数据管理等服务启动起来,并且仅依赖文件系统即可。 在高可用部署的情况下,可以将前端、镜像元数据管理、镜像清理和镜像构建等异步任务服务等分别作为单独的服务运行,api-server 与镜像元数据管理服务分别单独部署,主要在于镜像元数据管理服务会参与到镜像的拉取和推送服务中,涉及到的流量较大,这样便不会影响到 api-server 的稳定性,依赖的中间件将会有对象存储、Redis 、PostgreSQL/MySQL 。具体部署细节可以参考 sigma chart 中的实现:https://github.com/go-sigma/sigma/tree/main/deploy/sigma

镜像元数据管理

镜像元数据管理这里采用和 docker hub 比较类似的展示方式,在 repository 层级之下展示 tag ,而不是像 Harbor 和 ghcr 一样展示 artifact ,用户其实对于 artifact hash 值的展示不是那么理解,而 tag 是用户自己定义的东西,更容易理解一些,在对架构镜像的展示方式和 docker hub 保持一致。 在多架构镜像这里,会有类似 sbom 的 artifact 的内容推送到 artifact list 内,sigma 的前端将会仅展示 image 、imageIndex 、chart 等类型的 artifact ,但是在 distribution-spec 标准接口上,sigma 还是会返回所有的 artifact 。

使用说明