# function-manager **Repository Path**: vector315/function-manager ## Basic Information - **Project Name**: function-manager - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-26 - **Last Updated**: 2025-07-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Serverless函数管理系统 ![License](https://img.shields.io/badge/license-MIT-blue.svg) ![Node.js](https://img.shields.io/badge/node-%3E%3D14.0.0-brightgreen.svg) ![Platform](https://img.shields.io/badge/platform-windows%20%7C%20macos%20%7C%20linux-lightgrey.svg) ## 项目简介 Serverless函数管理系统是一个基于Knative的函数管理平台,允许用户创建、部署和管理无服务器函数。该系统提供了完整的函数生命周期管理功能,包括函数创建、编辑、部署、发布和监控。 系统采用前后端分离架构,前端使用React和Ant Design构建,后端使用Node.js和Express框架实现,支持内存模式和数据库模式运行。 ## 功能特性 ### 用户管理 - 用户注册与登录 - 会话管理 ### 函数管理 - 创建、编辑、删除函数 - 函数列表展示与搜索 - 函数配置管理(名称、版本、描述、执行时限、处理器、镜像等) - 环境变量配置 - 资源请求与限制配置 ### 函数部署 - 模拟部署功能 - 真实部署到Knative平台 ### 函数发布 - 发布函数到函数商店 - 撤回已发布的函数 ### 函数商店 - 浏览其他用户发布的函数 - 搜索函数 - 查看函数详情 - 部署函数商店中的函数 ### 实例管理 - 查看已部署的函数实例 - 启动/停止实例 - 查看实例在Knative上的实时状态 ## 技术架构 ### 前端技术栈 - React 18 - Ant Design组件库 - React Router v6 - Axios HTTP客户端 ### 后端技术栈 - Node.js - Express.js - MySQL/Memory存储 - Kubernetes Client for Knative ## 环境要求 - Node.js >= 14.0.0 - npm >= 6.0.0 - MySQL (可选,用于数据库模式) - Kubernetes集群 with Knative (可选,用于真实部署) ## 快速开始 ### 克隆项目 ```bash git clone https://gitee.com/vector315/function-manager.git cd function-manager ``` ### 后端服务启动 #### 内存模式(推荐用于测试) ```bash cd backend npm install npm run start:memory ``` #### 数据库模式 1. 确保已安装并运行MySQL 2. 创建数据库: ```sql CREATE DATABASE function_manager; ``` 3. 配置环境变量(可选): ```bash export DB_HOST=localhost export DB_USER=your_username export DB_PASSWORD=your_password export DB_NAME=function_manager ``` 4. 启动服务: ```bash cd backend npm install npm start ``` ### 前端服务启动 ```bash cd frontend npm install npm start ``` 默认情况下,前端服务将在 `http://localhost:3000` 运行,后端API服务在 `http://localhost:3001` 运行。 ### 访问应用 打开浏览器访问 `http://localhost:3000`,使用以下默认账户登录: - 用户名: admin - 密码: admin123 ## 部署说明 ### 构建前端应用 ```bash cd frontend npm run build ``` 构建后的文件将位于 `frontend/build` 目录中。 ### 生产环境部署 1. 配置环境变量: ```bash export DB_MODE=mysql export DB_HOST=your_db_host export DB_USER=your_db_user export DB_PASSWORD=your_db_password export DB_NAME=your_db_name export KNATIVE_NAMESPACE=your_namespace export PORT=your_port # 默认为3001 ``` 2. 启动后端服务: ```bash cd backend npm start ``` 3. 部署前端构建文件到Web服务器 ### Knative集成配置 要启用真实部署功能,需要配置以下环境变量: ```bash export KNATIVE_MODE=real export KNATIVE_NAMESPACE=default ``` 确保Kubernetes集群已正确配置kubectl,并且Knative Serving已安装。 ## 项目结构 ``` function-manager/ ├── backend/ # 后端服务 │ ├── node_modules/ # 依赖包 │ ├── db.js # 数据库连接 │ ├── init-db.js # 数据库初始化 │ ├── knative.js # Knative集成 │ ├── server.js # 主服务文件 │ ├── package.json # 后端依赖配置 │ └── package-lock.json # 依赖版本锁定 ├── frontend/ # 前端应用 │ ├── node_modules/ # 依赖包 │ ├── public/ # 静态资源 │ ├── src/ # 源代码 │ │ ├── components/ # 公共组件 │ │ ├── router/ # 路由配置 │ │ ├── services/ # API服务 │ │ ├── views/ # 页面视图 │ │ ├── App.js # 根组件 │ │ ├── index.js # 入口文件 │ │ └── index.css # 全局样式 │ ├── .env # 环境变量 │ ├── package.json # 前端依赖配置 │ └── package-lock.json # 依赖版本锁定 └── README.md # 项目说明文件 ``` ## API接口 ### 用户认证 - `POST /api/register` - 用户注册 - `POST /api/login` - 用户登录 ### 函数管理 - `POST /api/functions` - 创建函数 - `GET /api/functions` - 获取函数列表 - `GET /api/functions/:id` - 获取函数详情 - `PUT /api/functions/:id` - 更新函数 - `DELETE /api/functions/:id` - 删除函数 - `PATCH /api/functions/:id/publish` - 发布/撤回函数 - `POST /api/functions/:id/deploy` - 部署函数(模拟) - `POST /api/functions/:id/deploy-real` - 部署函数(真实) ### 实例管理 - `GET /api/instances` - 获取实例列表 - `GET /api/instances/:id` - 获取实例详情 - `POST /api/instances/:id/start` - 启动实例 - `POST /api/instances/:id/stop` - 停止实例 ## 安全说明 1. 当前版本密码以明文形式存储,生产环境应使用加密存储 2. 建议在生产环境中使用HTTPS协议 3. 敏感信息如数据库密码应通过环境变量配置 ## 开发指南 ### 代码规范 - 使用ESLint进行代码检查 - 遵循Airbnb JavaScript编码规范 - 使用语义化提交信息 ### 扩展开发 1. 添加新的函数配置项: - 更新前端表单组件 - 修改后端数据模型 - 更新数据库结构 2. 添加新的函数部署平台: - 实现新的部署服务 - 更新部署接口 ## 常见问题 ### 后端服务启动失败 确保端口未被占用,或修改后端服务端口: ```bash export PORT=3002 ``` ### 前端页面无法访问后端API 检查前端环境变量配置: ```bash # 在 frontend/.env 文件中 REACT_APP_API_BASE_URL=http://localhost:3001/api ``` ### 函数部署失败 1. 确认Knative环境配置正确 2. 检查Kubernetes集群连接状态 3. 验证函数配置信息是否完整 ## 后续计划 1. 增强用户权限管理 2. 实现实时日志查看功能 3. 添加函数调用统计和监控 4. 支持更多编程语言的函数模板 5. 增加函数版本管理功能 ## 许可证 本项目采用MIT许可证,详情请见[LICENSE](LICENSE)文件。 ## 联系方式 如有问题或建议,请提交Issue或联系项目维护者。