Skip to content

部署概述

Registry Server 是 Rack 架构的核心组件之一, 负责托管和分发 Registry JSON 配置、Preset 模板和项目模板文件。

什么是 Registry Server?

Registry Server 是一个静态资源分发服务器, 为 Rack CLI 工具提供统一的资源访问接口。它支持:

  • Registry 分发 - 托管 Registry JSON 配置和模板文件
  • 版本管理 - 支持多版本并存, 自动维护版本列表
  • 包上传 - 支持通过 API 上传新的 Registry 包
  • 命名空间管理 - 支持多租户隔离和访问控制
  • 认证授权 - 基于 Token 的细粒度权限管理, 支持 Admin Token 进行跨命名空间操作
  • Webhook 集成 - 事件驱动的通知机制
  • 性能优化 - 内置 ETag 缓存、压缩和速率限制

为什么需要自建服务?

虽然 Rack 提供了官方的 Registry 服务 (https://registry.rackjs.com), 但在以下场景下, 你可能需要部署自己的 Registry Server:

  • 企业私有化部署 - 企业内部使用, 需要将服务部署在私有网络或内网环境中。
  • 自定义 Registry 管理 - 需要托管企业内部开发的自定义 Registry 和模板。
  • 访问控制和审计 - 需要对 Registry 访问进行精细化的权限控制和审计。
  • 离线环境 - 在无法访问互联网的环境中使用 Rack。
  • 自定义集成 - 需要与企业现有的 CI/CD 流程、DevOps 平台集成。

服务架构

Registry Server 采用简洁的架构设计:

┌─────────────┐
│  Rack CLI   │ ←─────┐
└─────────────┘       │
                      │ HTTPS/HTTP
┌─────────────┐       │
│  CI/CD      │ ←─────┤
└─────────────┘       │

                ┌─────▼──────┐
                │  Registry  │
                │   Server   │
                └─────┬──────┘

        ┌─────────────┼─────────────┐
        │             │             │
   ┌────▼────┐  ┌─────▼────┐  ┌─────▼────┐
   │ Static  │  │   Auth   │  │  Webhook │
   │ Storage │  │  System  │  │  System  │
   └─────────┘  └──────────┘  └──────────┘

核心模块

  • 静态资源服务 - 分发 Registry、Preset、Schema 文件
  • 上传服务 - 接收并处理 Registry 包上传
  • 认证服务 - 基于 Token 的身份验证和权限控制
  • Webhook 服务 - 事件通知和集成
  • 监控服务 - 健康检查和 Prometheus 指标

API 端点

方法路径描述
GET/HEAD/registries/@ns/name/versions版本列表
GET/HEAD/registries/@ns/name最新版本
GET/HEAD/registries/@ns/name/1.0.0指定版本
GET/HEAD/registries/@ns/name/1.0.0/files/*模板文件
POST/registries上传 Registry 包
GET/namespaces列出所有命名空间
GET/namespaces/:ns/registries列出命名空间下的 Registry
GET/HEAD/presets/:name获取 Preset 模板
GET/HEAD/schemas/:file获取 JSON Schema
GET/health健康检查
GET/metricsPrometheus 指标

Released under the MIT License.