超大量更新

This commit is contained in:
zeaslity
2026-04-29 09:46:36 +08:00
parent ed945abdf1
commit e7c301023c
349 changed files with 83923 additions and 560 deletions

View File

@@ -1,224 +1,76 @@
# RMDC 产品需求文档 (PRD)
`
`
# RMDC (Runtime Management & DevOps Center) 产品需求文档 (PRD)
**产品名称**: RMDC (Runtime Management & DevOps Center)
**版本**: v1.0
**编制日期**: 2026-01-06
**版本**: v2.0
**编制日期**: 2026-03-28
**编制人**: 王子文
**修改原因**: 重新规划RMDC系统的总体设计方案
---
## 1. 产品背景
# 一、RMDC重大修改点
1. RMDC系统面向的人员技术水平较低不适合采用全部自建的页面登录就是极大的困难
2. RMDC系统现在缺少开发人员借用现有的成熟的平台可以快速的实现功能
3. RMDC应该解决的是在能力范围内解决团队核心的问题而不是纯粹的技术炫耀
### 1.1 业务背景
## 1.1 新增的关键模块
1. rmdc-feishu-operator
1. 借助飞书SDK实现飞书和RMDC之间的交互
2. 借助飞书的角色和权限系统
3. 借用飞书的项目管理和进度追踪功能
4. 借助飞书的机器人功能,实现通知能力
5. 借助飞书的审批功能,实现工单能力
2. rmdc-delivery-material
1. 解决交付物标准化的问题
2. 解决交付物落地的问题
3. 解决交付物管理的问题
在复杂的混合云/边缘计算环境中,运维团队面临以下挑战:
- **网络隔离**: 多个项目部署在不同网络环境(内网、边缘、公网)
- **权限分散**: Jenkins、K8S、主机等资源权限管理分散
- **状态不可见**: 无法统一查看各项目的运行状态
- **操作复杂**: 跨网络的操作需要繁琐的VPN/跳板机流程
## 1.2 移除的模块
1. rmdc-work-procedure
1. 移除工单系统,实现极为复杂繁琐
2. 借助飞书的能力实现工单能力
2. rmdc-notice-center
1. 移除通知中心,实现极为复杂繁琐
2. 借助飞书的能力实现通知能力
### 1.2 痛点总结
## 1.3 优化的模块
1. rmdc-continuous-integration
1. 将原本的rmdc-jenkins-dac模块重命名
2. 模块的定义不变,解决的是研发人员从代码到交付物的标准化问题
2. rmdc-user-auth
1. 去除行业组、产品组、安全组等非技术人员的登录管理
2. 简化权限管理,只保留技术人员的权限管理
3. rmdc-project-management
1. 简化项目管理模块的实现逻辑
4. rmdc-continuous-delivery
1. 简化持续交付部署模块的实现逻辑
5. 前端内容
1. 去除工单系统相关的前端页面
2. 去除项目管理相关的前端页面
3. 去除用户管理、通信录相关的前端页面
| 痛点 | 当前方案 | 问题 |
|------|----------|------|
| 跨网络访问 | VPN + 跳板机 | 效率低,依赖人工 |
| 分支权限管理 | Jenkins原生 | 粒度粗,无法精细控制 |
| 项目状态监控 | 分散的监控系统 | 无统一视图 |
| 自动化部署 | 手动脚本 | 可靠性差,无审计 |
# 二、RMDC系统架构及功能层级
---
1. 借助飞书实现面向非技术人员的RMDC系统的前端页面,借助飞书平台的项目管理、工单、通知等能力简化RMDC系统的设计,借助飞书SDK实现RMDC和飞书之间的交互(rmdc-feishu-operator).
2. RMDC系统面向整个研发交付部署流程,以项目管理(rmdc-project-management)为核心锚点.主要解决的是研发人员从代码到交付物的标准化(rmdc-continuous-integration),从交付物到部署落地的标准化(rmdc-delivery-material),交付部署的标准化(rmdc-watchdog-node),持续交付部署的标准化(rmdc-continuous-delivery),覆盖整个生命周期.
3. 借助章鱼Octopus的设计理念,RMDC系统是一个中心平台+边缘项目节点的设计理念,中心平台包括项目管理(rmdc-project-management),云边协同消息中心(rmdc-exchange-hub),边缘项目节点由边缘控制中心(rmdc-wathchdog),边缘微服务代理(rmdc-watchdog-agent),边缘主机代理(rmdc-watchdog-node)共同组成.配合边缘监控中心(rmdc-monitor-center),实现对边缘节点运行状态的监控和管理.
## 2. 产品定位
## 2.1 核心架构
RMDC是**以项目(K8s Namespace)为核心维度**的统一运维与交付平台,通过"边缘代理 + 消息总线"架构打通网络边界,提供:
### 飞书协同架构
1. 广义上说,飞书是整个项目的入口,RMDC系统的暴露面即为飞书
2. rmdc-feishu-operator是连接飞书和RMDC之间的桥梁,实现飞书和RMDC之间的交互,飞书作为整个项目面向非技术人员的入口,提供项目管理,工单,通知等能力
3. 用户提交信息,经过飞书的审批流程,审批通过后,rmdc-feishu-operator将信息传递给RMDC系统,RMDC系统将信息传递给项目管理模块,项目管理模块将信息传递给持续交付部署模块,持续交付部署模块将信息传递给边缘控制中心,边缘控制中心将信息传递给边缘微服务代理,边缘微服务代理将信息传递给边缘主机代理,边缘主机代理将信息传递给边缘监控中心,从而实现用户从飞书提交信息到边缘节点运行状态的监控和管理的全流程
- **统一入口**: 一个平台管理所有项目
- **精细权限**: 分支级别的构建权限控制
- **实时可见**: 项目状态、构建进度、监控数据统一展示
- **全程审计**: 所有操作可追溯
### 云边协同架构
1. rmdc-projetc-mangement作为核心的平台
2. rmdc-exchange-hub作为云边协同消息中心,承担着命令下发和消息上传的通路,是云边协同架构的核心
3. rmdc-wathchdog作为边缘控制中心
4. rmdc-watchdog-agent作为边缘微服务代理
5. rmdc-watchdog-node作为边缘主机代理
6. rmdc-monitor-center作为边缘监控中心
7. rmdc-continuous-delivery作为持续交付部署组件,借助上面的项目管理,借助命令下发和消息上传的通路(rmdc-exchange-hub),借助rmdc-watchdog模块的Operator能力,实现持续交付部署的标准化可观测化
---
## 3. 目标用户
| 用户角色 | 关键诉求 |
|----------|----------|
| **超级管理员(SuperAdmin)** | 管理所有项目、用户、权限 |
| **管理员(Admin)** | 管理负责的项目,分配权限给普通用户 |
| **普通人员(Normal)** | 查看项目信息,触发被授权的构建 |
| **第三方人员(Third)** | 有限度地查看被授权的内容 |
---
## 4. 功能范围
### 4.1 核心功能模块
```mermaid
mindmap
root((RMDC))
Jenkins模块
组织/仓库/分支管理
分支级权限控制(DAC)
构建触发与追踪
镜像打包(DCU)
项目管理模块
项目信息CRUD
部署信息管理
授权管理(一级)
消息网关模块
MQTT消息中继
指令生命周期
同步/异步指令
边缘代理模块
K8S操作代理
主机操作代理
二级授权管理
监控日志模块
实时日志查看
监控数据采集
告警通知
用户权限模块
用户管理
角色管理
权限分配
审计模块
操作审计
日志查询
导出功能
```
### 4.2 第一期功能(MVP)
| 模块 | 功能 | 优先级 |
|------|------|--------|
| Jenkins | 组织/仓库/分支查询 | P0 |
| Jenkins | 构建触发与状态追踪 | P0 |
| Jenkins | 分支级权限控制 | P0 |
| 项目管理 | 项目信息CRUD | P0 |
| 项目管理 | 授权密钥生成 | P0 |
| 用户权限 | RBAC权限管理 | P0 |
| 审计 | 基础操作审计 | P1 |
| DCU | 镜像下载压缩上传 | P1 |
### 4.3 第二期功能
| 模块 | 功能 | 优先级 |
|------|------|--------|
| 消息网关 | MQTT消息中继 | P0 |
| 消息网关 | 指令生命周期管理 | P0 |
| 边缘代理 | K8S操作代理 | P0 |
| 边缘代理 | 主机操作代理 | P1 |
| 监控日志 | 实时日志查看 | P1 |
| 监控日志 | 监控数据展示 | P2 |
---
## 5. 用户故事
### 5.1 Jenkins构建
**作为** 开发人员
**我需要** 在RMDC平台触发指定分支的构建
**以便于** 快速验证代码变更无需登录Jenkins
**验收标准**:
- [ ] 能够查看被授权的分支列表
- [ ] 能够触发分支构建
- [ ] 能够查看构建进度和结果
- [ ] 能够查看构建日志
### 5.2 权限管理
**作为** 管理员
**我需要** 为团队成员分配分支级构建权限
**以便于** 确保只有授权人员能够构建特定分支
**验收标准**:
- [ ] 能够按组织/仓库/分支粒度分配权限
- [ ] 权限支持继承(组织→仓库→分支)
- [ ] 能够一键复制其他用户的权限
### 5.3 项目管理
**作为** 超级管理员
**我需要** 创建和管理项目信息
**以便于** 统一维护各项目的基本信息和授权配置
**验收标准**:
- [ ] 能够创建项目并录入基本信息
- [ ] 能够管理项目的部署信息和中间件配置
- [ ] 能够生成项目授权密钥
- [ ] 能够导出项目信息
---
## 6. 非功能性需求
### 6.1 性能要求
| 指标 | 要求 |
|------|------|
| API响应时间 | P90 < 300ms |
| 构建状态同步延迟 | < 15s |
| MQTT消息传输延迟 | < 5s |
| 系统可用性 | 99.9% |
### 6.2 安全要求
| 类别 | 要求 |
|------|------|
| 认证 | JWT Token有效期可配置 |
| 授权 | RBAC + 资源级ACL |
| 传输 | HTTPS/TLS加密 |
| 存储 | 敏感字段AES-256加密 |
| 审计 | 所有写操作记录审计日志 |
### 6.3 兼容性
- **前端**: Chrome 80+, Edge 80+, Firefox 75+
- **后端**: Go 1.21+
- **数据库**: PostgreSQL 13+
---
## 7. 系统边界
### 7.1 与外部系统的关系
| 外部系统 | 交互方式 | 说明 |
|----------|----------|------|
| Jenkins | REST API | 构建管理状态同步 |
| MinIO | S3 API | 镜像包存储 |
| MQTT Broker | MQTT协议 | 消息中继 |
| K8S | K8S API | 容器编排 |
### 7.2 不在范围内
- 源代码管理由GitLab/GitHub负责
- CI/CD编排逻辑由Jenkins Pipeline负责
- 容器镜像仓库由Harbor负责
- 基础设施管理由IaaS平台负责
---
## 8. 约束和假设
### 8.1 约束
1. 必须兼容现有Jenkins配置不修改Jenkinsfile
2. 边缘项目通过公网MQTT通信需考虑弱网环境
3. 授权密钥离线部署不通过网络传输
### 8.2 假设
1. 所有边缘项目均部署在K8S环境
2. 各项目有独立的K8S Namespace
3. MQTT Broker可从公网访问
---
## 9. 版本历史
| 版本 | 日期 | 修改内容 |
|------|------|----------|
| v1.0 | 2026-01-06 | 初始版本 |

View File

@@ -0,0 +1,73 @@
```mermaid
graph TD
%% 样式定义
classDef feishu fill:#e6f2ff,stroke:#007bff,stroke-width:2px;
classDef cloud fill:#f9f9f9,stroke:#333,stroke-width:2px;
classDef edge fill:#fff3e6,stroke:#ff9900,stroke-width:2px;
classDef storage fill:#e6ffe6,stroke:#28a745,stroke-width:2px;
subgraph UserLayer ["交互与入口层 (依赖飞书生态)"]
FS_App["飞书工作台 / 小程序"]
FS_Approval["飞书审批流 / 工单"]
FS_Bot["飞书机器人通知"]
end
class FS_App,FS_Approval,FS_Bot feishu;
subgraph Source ["外部依赖源"]
GitRepos["代码仓库 GitLab/GitHub"]
end
subgraph CloudLayer ["中心控制面 (RMDC Cloud)"]
FeishuOp["rmdc-feishu-operator<br/>飞书交互桥梁"]
UserAuth["rmdc-user-auth<br/>技术人员鉴权"]
PM["rmdc-project-management<br/>项目管理核心"]
CI["rmdc-continuous-integration<br/>标准化构建"]
Material["rmdc-delivery-material<br/>交付物管理"]
CD["rmdc-continuous-delivery<br/>持续交付部署"]
Hub(("rmdc-exchange-hub<br/>云边协同消息中心"))
DB[("核心数据库<br/>元数据/状态")]
Registry[("制品库<br/>镜像/包/配置")]
end
class FeishuOp,UserAuth,PM,CI,Material,CD,Hub cloud;
class DB,Registry storage;
subgraph EdgeLayer ["边缘执行面 (RMDC Edge)"]
Watchdog["rmdc-watchdog<br/>边缘控制中心"]
Agent["rmdc-watchdog-agent<br/>微服务代理"]
Node["rmdc-watchdog-node<br/>主机代理"]
Monitor["rmdc-monitor-center<br/>边缘监控中心"]
end
class Watchdog,Agent,Node,Monitor edge;
%% 交互链路定义
FS_Approval -- "审批结果/指令" --> FeishuOp
FeishuOp -- "推送通知/状态回传" --> FS_Bot
FeishuOp <-->|"信息交换"| PM
UserAuth -.->|"技术人员底层权限管理"| PM
GitRepos -- "Webhook 触发构建" --> CI
PM -->|"调度集成"| CI
CI -->|"生成标准化产物"| Material
Material -->|"存储制品"| Registry
PM -->|"调度部署"| CD
CD -->|"获取产物信息"| Material
CD -->|"下发部署/管控指令"| Hub
PM <-.-> DB
CD <-.-> DB
Hub ===|"下发管控命令"| Watchdog
Watchdog ===|"上报边缘状态/心跳"| Hub
Hub -.->|"回传状态以供通知"| FeishuOp
Watchdog -->|"管控微服务"| Agent
Watchdog -->|"管控主机"| Node
Agent -.->|"微服务运行指标"| Monitor
Node -.->|"主机基础指标"| Monitor
Monitor -.->|"汇聚监控告警数据"| Watchdog
```

View File

@@ -0,0 +1,224 @@
# RMDC 产品需求文档 (PRD)
**产品名称**: RMDC (Runtime Management & DevOps Center)
**版本**: v1.0
**编制日期**: 2026-01-06
---
## 1. 产品背景
### 1.1 业务背景
在复杂的混合云/边缘计算环境中,运维团队面临以下挑战:
- **网络隔离**: 多个项目部署在不同网络环境(内网、边缘、公网)
- **权限分散**: Jenkins、K8S、主机等资源权限管理分散
- **状态不可见**: 无法统一查看各项目的运行状态
- **操作复杂**: 跨网络的操作需要繁琐的VPN/跳板机流程
### 1.2 痛点总结
| 痛点 | 当前方案 | 问题 |
|------|----------|------|
| 跨网络访问 | VPN + 跳板机 | 效率低,依赖人工 |
| 分支权限管理 | Jenkins原生 | 粒度粗,无法精细控制 |
| 项目状态监控 | 分散的监控系统 | 无统一视图 |
| 自动化部署 | 手动脚本 | 可靠性差,无审计 |
---
## 2. 产品定位
RMDC是**以项目(K8s Namespace)为核心维度**的统一运维与交付平台,通过"边缘代理 + 消息总线"架构打通网络边界,提供:
- **统一入口**: 一个平台管理所有项目
- **精细权限**: 分支级别的构建权限控制
- **实时可见**: 项目状态、构建进度、监控数据统一展示
- **全程审计**: 所有操作可追溯
---
## 3. 目标用户
| 用户角色 | 关键诉求 |
|----------|----------|
| **超级管理员(SuperAdmin)** | 管理所有项目、用户、权限 |
| **管理员(Admin)** | 管理负责的项目,分配权限给普通用户 |
| **普通人员(Normal)** | 查看项目信息,触发被授权的构建 |
| **第三方人员(Third)** | 有限度地查看被授权的内容 |
---
## 4. 功能范围
### 4.1 核心功能模块
```mermaid
mindmap
root((RMDC))
Jenkins模块
组织/仓库/分支管理
分支级权限控制(DAC)
构建触发与追踪
镜像打包(DCU)
项目管理模块
项目信息CRUD
部署信息管理
授权管理(一级)
消息网关模块
MQTT消息中继
指令生命周期
同步/异步指令
边缘代理模块
K8S操作代理
主机操作代理
二级授权管理
监控日志模块
实时日志查看
监控数据采集
告警通知
用户权限模块
用户管理
角色管理
权限分配
审计模块
操作审计
日志查询
导出功能
```
### 4.2 第一期功能(MVP)
| 模块 | 功能 | 优先级 |
|------|------|--------|
| Jenkins | 组织/仓库/分支查询 | P0 |
| Jenkins | 构建触发与状态追踪 | P0 |
| Jenkins | 分支级权限控制 | P0 |
| 项目管理 | 项目信息CRUD | P0 |
| 项目管理 | 授权密钥生成 | P0 |
| 用户权限 | RBAC权限管理 | P0 |
| 审计 | 基础操作审计 | P1 |
| DCU | 镜像下载压缩上传 | P1 |
### 4.3 第二期功能
| 模块 | 功能 | 优先级 |
|------|------|--------|
| 消息网关 | MQTT消息中继 | P0 |
| 消息网关 | 指令生命周期管理 | P0 |
| 边缘代理 | K8S操作代理 | P0 |
| 边缘代理 | 主机操作代理 | P1 |
| 监控日志 | 实时日志查看 | P1 |
| 监控日志 | 监控数据展示 | P2 |
---
## 5. 用户故事
### 5.1 Jenkins构建
**作为** 开发人员
**我需要** 在RMDC平台触发指定分支的构建
**以便于** 快速验证代码变更无需登录Jenkins
**验收标准**:
- [ ] 能够查看被授权的分支列表
- [ ] 能够触发分支构建
- [ ] 能够查看构建进度和结果
- [ ] 能够查看构建日志
### 5.2 权限管理
**作为** 管理员
**我需要** 为团队成员分配分支级构建权限
**以便于** 确保只有授权人员能够构建特定分支
**验收标准**:
- [ ] 能够按组织/仓库/分支粒度分配权限
- [ ] 权限支持继承(组织→仓库→分支)
- [ ] 能够一键复制其他用户的权限
### 5.3 项目管理
**作为** 超级管理员
**我需要** 创建和管理项目信息
**以便于** 统一维护各项目的基本信息和授权配置
**验收标准**:
- [ ] 能够创建项目并录入基本信息
- [ ] 能够管理项目的部署信息和中间件配置
- [ ] 能够生成项目授权密钥
- [ ] 能够导出项目信息
---
## 6. 非功能性需求
### 6.1 性能要求
| 指标 | 要求 |
|------|------|
| API响应时间 | P90 < 300ms |
| 构建状态同步延迟 | < 15s |
| MQTT消息传输延迟 | < 5s |
| 系统可用性 | 99.9% |
### 6.2 安全要求
| 类别 | 要求 |
|------|------|
| 认证 | JWT Token有效期可配置 |
| 授权 | RBAC + 资源级ACL |
| 传输 | HTTPS/TLS加密 |
| 存储 | 敏感字段AES-256加密 |
| 审计 | 所有写操作记录审计日志 |
### 6.3 兼容性
- **前端**: Chrome 80+, Edge 80+, Firefox 75+
- **后端**: Go 1.21+
- **数据库**: PostgreSQL 13+
---
## 7. 系统边界
### 7.1 与外部系统的关系
| 外部系统 | 交互方式 | 说明 |
|----------|----------|------|
| Jenkins | REST API | 构建管理状态同步 |
| MinIO | S3 API | 镜像包存储 |
| MQTT Broker | MQTT协议 | 消息中继 |
| K8S | K8S API | 容器编排 |
### 7.2 不在范围内
- 源代码管理由GitLab/GitHub负责
- CI/CD编排逻辑由Jenkins Pipeline负责
- 容器镜像仓库由Harbor负责
- 基础设施管理由IaaS平台负责
---
## 8. 约束和假设
### 8.1 约束
1. 必须兼容现有Jenkins配置不修改Jenkinsfile
2. 边缘项目通过公网MQTT通信需考虑弱网环境
3. 授权密钥离线部署不通过网络传输
### 8.2 假设
1. 所有边缘项目均部署在K8S环境
2. 各项目有独立的K8S Namespace
3. MQTT Broker可从公网访问
---
## 9. 版本历史
| 版本 | 日期 | 修改内容 |
|------|------|----------|
| v1.0 | 2026-01-06 | 初始版本 |