一个功能完整的云资源管理平台,支持通算和智算资源的纳管、分配、回收,以及完整的用户权限体系、计量计费、SSH访问和统计报表功能。
-
资源管理:支持通算和智算两种资源类型的全生命周期管理
- 资源创建、分配、回收
- 资源状态跟踪(待激活、运行中、已回收)
- 资源过期管理
-
用户体系:三层角色权限模型
- 平台管理员:管理所有用户和资源,分配资源给租户管理员
- 租户管理员:向平台管理员申请资源,管理租户下的用户和资源分配
- 租户用户:向租户管理员申请使用资源
-
申请审批:完整的工单审批流程
- 租户管理员向平台管理员申请资源
- 租户用户向租户管理员申请资源
- 支持申请状态的审批和拒绝
-
SSH访问:安全的资源访问管理
- 临时SSH会话令牌生成
- 可配置会话有效期
- 自动清理过期会话
-
计量计费:灵活的计费模式
- 支持按卡时、CPU时、GPU时等多种计量方式
- 账单生成和查询
- 用量记录追踪
-
统计报表:全面的数据统计
- 容量统计(按租户)
- 费用统计(按租户)
- 会话统计
- 🎨 现代化UI:基于 Ant Design 的美观界面
- 🚀 高性能:FastAPI 异步框架,响应迅速
- 📱 响应式设计:适配不同屏幕尺寸
- 🔒 安全可靠:JWT认证,权限控制
- 📊 实时数据:动态更新,实时统计
- FastAPI - 现代化Python Web框架
- Pydantic - 数据验证和序列化
- Python 3.8+ - 编程语言
- React 18 - UI框架
- TypeScript - 类型安全
- Ant Design - UI组件库
- Vite - 构建工具
- React Router - 路由管理
- Axios - HTTP客户端
cloud-management-platform/
├── app/ # 后端应用
│ ├── core/ # 核心配置
│ ├── routes/ # API路由
│ │ ├── auth.py # 认证相关
│ │ ├── tenants.py # 租户管理
│ │ ├── resources.py # 资源管理
│ │ ├── requests.py # 申请审批
│ │ ├── billing.py # 计费管理
│ │ ├── reports.py # 统计报表
│ │ └── ssh.py # SSH访问
│ ├── schemas/ # 数据模型
│ ├── services/ # 业务逻辑
│ └── main.py # 应用入口
├── frontend/ # 前端应用
│ ├── src/
│ │ ├── api/ # API客户端
│ │ ├── components/ # 通用组件
│ │ ├── pages/ # 页面组件
│ │ ├── App.tsx # 应用入口
│ │ └── main.tsx # 入口文件
│ ├── package.json
│ └── vite.config.ts
├── requirements.txt # Python依赖
└── README.md # 项目文档
- Python 3.8+
- Node.js 16+
- npm 或 yarn
- 安装依赖
pip install -r requirements.txt- 启动服务
uvicorn app.main:app --reload后端服务将在 http://127.0.0.1:8000 启动
- 访问API文档
打开浏览器访问 http://127.0.0.1:8000/docs 查看Swagger API文档
- 进入前端目录
cd frontend- 安装依赖
npm install
# 或
yarn install- 启动开发服务器
npm run dev
# 或
yarn dev前端应用将在 http://localhost:3000 启动
系统启动时会自动创建演示账号:
| 用户名 | 角色 | 权限说明 |
|---|---|---|
platform-admin |
平台管理员 | 管理所有用户、租户和资源 |
tenant-admin |
租户管理员 | 管理租户内的用户和资源分配 |
tenant-user |
租户用户 | 申请和使用资源 |
注:演示环境下密码验证已简化,仅需输入用户名即可登录
访问前端地址 http://localhost:3000,使用上述账号登录。
- 平台管理员:可以创建资源并分配给任意租户
- 租户管理员:可以查看和管理本租户的资源
- 租户用户:可以查看可用的资源
- 租户管理员:向平台管理员提交资源申请
- 租户用户:向租户管理员提交资源申请
- 相应管理员可以在"申请审批"页面审批或拒绝申请
- 选择已激活的资源
- 创建SSH会话,设置有效期
- 获取临时访问令牌
- 使用令牌连接资源
在"统计报表"页面查看:
- 各租户的资源容量统计
- 各租户的费用统计
- SSH会话统计信息
在 app/core/config.py 中修改配置:
class Settings(BaseModel):
app_name: str = "Cloud Management Platform"
version: str = "0.1.0"
enable_demo_data: bool = True # 是否启用演示数据在 frontend/vite.config.ts 中修改API代理:
proxy: {
'/api': {
target: 'http://localhost:8000', // 后端地址
changeOrigin: true,
rewrite: (path) => path.replace(/^\/api/, '')
}
}POST /auth/login- 用户登录GET /auth/me- 获取当前用户信息GET /auth/users- 获取用户列表POST /auth/users- 创建用户
GET /tenants- 获取租户列表POST /tenants- 创建租户PATCH /tenants/{id}/quota- 更新租户配额
GET /resources- 获取资源列表POST /resources- 创建资源PATCH /resources/{id}/status- 更新资源状态DELETE /resources/{id}- 删除资源
GET /requests- 获取申请列表POST /requests- 提交申请POST /requests/{id}/approve- 审批通过POST /requests/{id}/reject- 拒绝申请
GET /billing/usage- 获取用量记录POST /billing/usage- 上报用量GET /billing/bills- 获取账单列表
GET /reports/capacity- 容量统计GET /reports/cost- 费用统计GET /reports/sessions- 会话统计
GET /ssh/sessions- 获取SSH会话列表POST /ssh/sessions- 创建SSH会话
详细API文档请访问 http://127.0.0.1:8000/docs
- 后端使用 Python 类型提示
- 前端使用 TypeScript 严格模式
- 遵循 PEP 8 和 ESLint 规范
当前版本使用内存存储,适合演示和开发。生产环境建议:
- 使用 PostgreSQL 作为主数据库
- 使用 Redis 做缓存和会话管理
- 使用对象存储保存审计日志
-
生产环境配置
- 启用HTTPS
- 使用强密码策略
- 实现完整的JWT认证
- 添加请求限流
-
权限控制
- 完善RBAC权限模型
- 实现细粒度权限控制
- 添加操作审计日志
-
数据安全
- 数据库加密
- 敏感信息脱敏
- 定期数据备份
- 集成真实数据库(PostgreSQL)
- 实现完整的JWT认证机制
- 添加资源使用监控
- 实现自动资源回收
- 添加邮件/短信通知
- 完善单元测试和集成测试
- 添加多租户数据隔离
- 实现资源配额限制
欢迎提交 Issue 和 Pull Request!
- Fork 本项目
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情
如有问题或建议,请通过以下方式联系:
- 提交 Issue
- 发送邮件
感谢以下开源项目:
⭐ 如果这个项目对你有帮助,请给个 Star!