@geek-fun/serverlessinsight
Version:
Full life cycle cross providers serverless application management for your fast-growing business.
233 lines (160 loc) • 7.37 kB
Markdown
# ServerlessInsight
<div align="center">
[](https://github.com/geek-fun/serverlessinsight/actions/workflows/node.yml)
[](https://github.com/geek-fun/serverlessinsight/actions/workflows/release.yml)
[](https://badge.fury.io/js/@geek-fun%2Fserverlessinsight)
[](https://snyk.io/test/github/geek-fun/serverlessinsight)
[](https://opensource.org/licenses/Apache-2.0)
[](https://codecov.io/gh/geek-fun/serverlessinsight)
**为快速增长的业务提供全生命周期跨云服务商的 Serverless 应用管理**
[官方网站](https://serverlessinsight.geekfun.club) • [文档](https://serverlessinsight.geekfun.club) • [示例](./samples) • [English](./README.md)
</div>
ServerlessInsight 是一个强大的 Serverless 框架,用于跨多个云服务商管理 Serverless 应用。它提供了统一的接口来部署、管理和调试 Serverless 函数和资源,使用基础设施即代码(IaC)原则。
无论您是在 AWS、阿里云、华为云还是其他服务商上构建应用,ServerlessInsight 都能简化您的开发工作流程:
- **多云支持** - 使用单一工具与多个云服务商协作
- **基础设施即代码** - 使用 YAML 定义您的 Serverless 基础设施
- **本地开发** - 在部署前本地测试您的函数
- **类型安全模板** - 在部署前验证您的配置
## ✨ 特性
- 🌍 **多云服务商支持** - 部署到阿里云、华为云等多个平台
- 📦 **统一配置** - 所有服务商使用单一 YAML 格式
- 🚀 **快速部署** - 使用单个命令部署 Serverless 应用
- 🔍 **模板验证** - 在部署前验证您的 IaC 模板
- 🏠 **本地测试** - 在本地运行和调试 Serverless 函数
- 🔄 **模板生成** - 生成特定云服务商的 IaC 模板
- 🌐 **API 网关集成** - 为您的函数配置 HTTP 端点
- 💾 **资源管理** - 管理存储、数据库和其他云资源
- 🔐 **安全优先** - 内置验证和安全最佳实践
- 📊 **全面的日志记录** - 调试和监控您的应用
## ☁️ 支持的云服务商
ServerlessInsight 支持以下云服务商:
| 云服务商 | 函数 | API 网关 | 存储 | 数据库 | 状态 |
|----------|------|----------|------|--------|------|
| **阿里云** | ✅ FC3 | ✅ API 网关 | ✅ OSS | ✅ RDS, OTS, ESS | 稳定 |
| **华为云** | ✅ FunctionGraph | 🚧 即将推出 | 🚧 即将推出 | 🚧 即将推出 | 测试版 |
| **AWS** | 🔜 计划中 | 🔜 计划中 | 🔜 计划中 | 🔜 计划中 | 计划中 |
| **Azure** | 🔜 计划中 | 🔜 计划中 | 🔜 计划中 | 🔜 计划中 | 计划中 |
| **Google Cloud** | 🔜 计划中 | 🔜 计划中 | 🔜 计划中 | 🔜 计划中 | 计划中 |
| **腾讯云** | 🔜 计划中 | 🔜 计划中 | 🔜 计划中 | 🔜 计划中 | 计划中 |
## 🚀 快速开始
### 前置要求
- **Node.js** 16.x 或更高版本
- 云服务商凭证(阿里云 AccessKey、华为云凭证等)
### 安装
使用 npm 全局安装 ServerlessInsight:
```bash
npm install -g @geek-fun/serverlessinsight
```
验证安装:
```bash
si --version
```
## 📚 使用方法
```bash
# 验证您的 Serverless 配置
si validate <stackName> -f serverless.yml
# 部署您的 Serverless 应用
si deploy <stackName> -f serverless.yml -s dev
# 本地运行您的应用进行调试
si local <stackName> -f serverless.yml -s local
# 生成特定云服务商的模板
si template <stackName> -f serverless.yml -t JSON
# 销毁已部署的堆栈
si destroy <stackName> -f serverless.yml
```
## 💡 示例
ServerlessInsight 使用简单的 YAML 格式来定义您的 Serverless 基础设施:
```yaml
version: 0.0.1
provider:
name: aliyun
region: cn-hongkong
service: my-api-service
functions:
hello_function:
name: hello-world-fn
code:
runtime: nodejs18
handler: index.handler
path: ./src
memory: 512
timeout: 10
environment:
NODE_ENV: production
events:
api_gateway:
type: API_GATEWAY
name: my-api-gateway
triggers:
- method: GET
path: /api/hello
backend: ${functions.hello_function}
```
更多示例请查看 [samples](./samples) 目录:
- [API 网关示例](./samples/aliyun-poc-api.yml) - 部署带 HTTP 端点的函数
- [存储示例](./samples/aliyun-poc-bucket.yml) - 配置 OSS 存储桶
- [数据库示例](./samples/aliyun-poc-rds.yml) - 设置 RDS 数据库
- [表格存储示例](./samples/aliyun-poc-table.yml) - 配置 OTS 表格存储
- [Elasticsearch 示例](./samples/aliyun-poc-es.yml) - 部署 Elasticsearch Serverless
- [自定义域名示例](./samples/aliyun-poc-domain.yml) - 配置自定义域名
- [GPU 函数示例](./samples/aliyun-poc-fc-gpu.yml) - 部署支持 GPU 的函数
- [华为云示例](./samples/huawei-poc-fc.yml) - 部署到华为云 FunctionGraph
## 🔧 本地开发
```bash
# 克隆和设置
git clone https://github.com/geek-fun/serverlessinsight.git
cd serverlessinsight
npm install
# 构建并链接用于开发
npm run build
npm link
# 运行本地开发服务器
si local my-stack -f serverless.yml -s local
# 运行测试
npm test
# 检查代码规范
npm run lint:check
```
## 📘 文档
完整文档请访问 [serverlessinsight.geekfun.club](https://serverlessinsight.geekfun.club)
其他资源:
- [快速开始指南](https://serverlessinsight.geekfun.club)
- [配置参考](https://serverlessinsight.geekfun.club)
- [API 文档](https://serverlessinsight.geekfun.club)
- [最佳实践](https://serverlessinsight.geekfun.club)
## 🤝 贡献
我们欢迎社区的贡献!以下是您可以帮助的方式:
1. **Fork 仓库**
2. **创建功能分支** (`git checkout -b feature/amazing-feature`)
3. **提交您的更改** (`git commit -m 'Add amazing feature'`)
4. **推送到分支** (`git push origin feature/amazing-feature`)
5. **打开 Pull Request**
## 👥 社区
加入我们的社区以获取帮助、分享想法和贡献:
- **GitHub Issues** - [报告错误或请求功能](https://github.com/geek-fun/serverlessinsight/issues)
- **官方网站** - [serverlessinsight.geekfun.club](https://serverlessinsight.geekfun.club)
## 📄 许可证
本项目采用 Apache License 2.0 许可证 - 详见 [LICENSE](LICENSE) 文件。
## 🙏 致谢
ServerlessInsight 使用以下优秀技术构建:
- [Node.js](https://nodejs.org/) - JavaScript 运行时
- [TypeScript](https://www.typescriptlang.org/) - 类型安全的 JavaScript
- [Commander.js](https://github.com/tj/commander.js/) - CLI 框架
- [阿里云 ROS CDK](https://github.com/aliyun/Resource-Orchestration-Service-Cloud-Development-Kit) - 云基础设施 SDK
<div align="center">
**由 [geek-fun](https://github.com/geek-fun) 团队用 ❤️ 制作**
[⬆ 回到顶部](#serverlessinsight)
</div>