#registry #s3 #storage #container #oci #back-end #api

app ha-registry

高可用性容器注册中心

1 个不稳定版本

0.0.1 2024年6月25日

#41 in #oci

EUPL-1.2

60KB
368

HA-registry

[!IMPORTANT] HA-registry 处于开发初期阶段,不建议用于生产环境。

[!NOTE] HA-registry 是实验性的,API 可能会变化直到稳定。许多功能尚未实现,目前尚无实际用途。

HA-registry 是一个高度可用、速度极快的™ OCI 容器分发服务,用 Rust 编写,利用 S3 后端进行 blob 存储,并使用 PostgreSQL 数据库进行分布式锁定。其目标是支持在更新部署和垃圾回收下,n>2 部署的拉取和推送。

它旨在通过垃圾回收自动化来实现,并希望通过实现虚拟仓库和基于垃圾回收的升级等特性,取代像 artifactory 这样的企业级注册解决方案。

另一个目标是能够通过遍历 S3 存储来建立数据库,确保数据库只在运行时保持一致性。

HA-registry 根据 EUPL-1.2 许可,无需 CLA,并寻求遵守 REUSE 规范。我们还强制执行常规提交,并寻求建立强大的 semver 文化。

项目中使用的其他技术包括 Axum、Tokio 和 Nix,用于开发环境、打包和 NixOS VM 测试。

限制

  • 仅支持 S3

OCI API 兼容性

端点

ID 方法 API 端点 成功 失败 已实现
end-1 GET /v2/ 200 404/401
end-2 GET / HEAD /v2/<name>/blobs/<digest> 200 404
end-3 GET / HEAD /v2/<name>/manifests/<reference> 200 404
end-4a POST /v2/<name>/blobs/uploads/ 202 404
end-4b POST /v2/<name>/blobs/uploads/?digest=<digest> 201/202 404/400
end-5 PATCH /v2/<name>/blobs/uploads/<reference> 202 404/416
end-6 PUT /v2/<name>/blobs/uploads/<reference>?digest=<digest> 201 404/400
end-7 PUT /v2/<name>/manifests/<reference> 201 404
end-8a GET /v2/<name>/tags/list 200 404
end-8b GET /v2/<name>/tags/list?n=<integer>&last=<tagname> 200 404
end-9 DELETE /v2/<name>/manifests/<reference> 202 404/400/405
end-10 DELETE /v2/<name>/blobs/<digest> 202 404/405
end-11 POST /v2/<name>/blobs/uploads/?mount=<digest>&from=<other_name> 201 404
end-12a GET /v2/<name>/referrers/<digest> 200 404/400
end-12b GET /v2/<name>/referrers/<digest>?artifactType=<artifactType> 200 404/400
end-13 GET /v2/<name>/blobs/uploads/<reference> 204 404

另请参阅

依赖项

~31–48MB
~692K SLoC