部署概述
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 | /metrics | Prometheus 指标 |

