Skip to content

Crazydonelu/grpc-web-manager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

gRPC Web Manager

English | 中文

CI License: MIT Python 3.8+ Docker

一个跨平台的 gRPC 服务管理 WebUI 工具,支持 Windows、Linux、macOS 系统。通过 Web 界面管理 Kubernetes 集群连接和 gRPC 服务调用。

📸 功能截图

集群管理

集群管理界面 管理 Kubernetes 集群配置,支持连接状态监控和一键连接

服务管理

服务管理界面 管理 gRPC 服务配置,支持服务测试和状态监控

工具配置

工具配置界面 管理 工具配置

✨ 功能特性

  • 🌐 跨平台支持: Windows/Linux/macOS
  • 🔗 集群管理: 增删改查 Kubernetes 集群配置
  • 🚀 服务管理: 管理 gRPC 服务配置和连接测试
  • 📱 Web 界面: 直观的 Web UI 操作界面
  • 🔌 Telepresence 集成: 自动管理集群连接状态
  • 实时状态: 显示连接状态和服务健康状况
  • 🛠️ 命令执行: 在线执行 gRPC 命令并查看结果
  • 🐳 Docker 支持: 提供 Docker 镜像,便于部署

🚀 快速开始

方式一:直接运行

# 克隆项目
git clone https://github.com/Crazydonelu/grpc-web-manager.git
cd grpc-web-manager

# 安装依赖
cd grpc-web-manager
pip install -r requirements.txt

# 创建示例数据库(首次运行)
cd ..
python create_example_db.py

# 启动服务
cd grpc-web-manager
python start.py

方式二:使用 Docker

# 使用 Docker Compose(推荐)
docker-compose up -d

# 或者直接运行 Docker
docker run -p 5000:5000 ghcr.io/Crazydonelu/grpc-web-manager:latest

访问应用

打开浏览器访问: http://localhost:5000

📊 示例数据库

项目提供了一个包含示例数据的数据库,方便新用户快速体验功能:

创建示例数据库

# 运行示例数据库创建脚本
python create_example_db.py

示例数据内容

  • 3个集群配置: dev-cluster, staging-cluster, prod-cluster
  • 4个gRPC服务: user-service, order-service, payment-service, notification-service
  • 8个系统配置项: 包括工具路径、超时设置、日志级别等

使用示例数据库

  1. 运行 python create_example_db.py 创建示例数据库
  2. 示例数据库文件: data/grpc_manager_example.db
  3. 应用启动时会自动创建 data/grpc_manager.db(如果不存在)
  4. 你可以复制示例数据库作为起始点:
    cp data/grpc_manager_example.db data/grpc_manager.db

数据安全

  • 实际的数据库文件 grpc_manager.db 已在 .gitignore 中排除
  • 只有示例数据库文件会被提交到版本控制
  • 你的个人配置和敏感信息不会被意外提交

📋 系统要求

  • Python 3.8+
  • Telepresence 2.x(需要单独安装)
  • grpcurl 工具(可选,用于 gRPC 调用)

📖 安装指南

Telepresence 安装

Windows

# 使用 Chocolatey
choco install telepresence

# 或下载二进制文件
# 访问 https://www.telepresence.io/docs/latest/install/

macOS

brew install datawire/blackbird/telepresence

Linux

sudo curl -fL https://app.getambassador.io/download/tel2/linux/amd64/latest/telepresence -o /usr/local/bin/telepresence
sudo chmod +x /usr/local/bin/telepresence

grpcurl 安装(可选)

使用 Go

go install github.com/fullstorydev/grpcurl/cmd/grpcurl@latest

使用包管理器

# macOS
brew install grpcurl

# Ubuntu/Debian
apt-get install grpcurl

# Windows (Chocolatey)
choco install grpcurl

📚 使用说明

集群管理

  1. 在"集群管理"页面添加 Kubernetes 集群
  2. 配置 kubeconfig 文件路径
  3. 点击"连接"按钮建立 Telepresence 连接
  4. 查看连接状态

服务管理

  1. 在"服务管理"页面添加 gRPC 服务
  2. 配置服务 URL 和端口
  3. 测试服务连接状态
  4. 启动 gRPC UI 进行调试

命令执行

  1. 选择已配置的 gRPC 服务
  2. 输入方法名和请求参数
  3. 执行命令并查看结果

🏗️ 项目结构

grpc-web-manager/
├── app.py                      # Flask 主应用
├── start.py                    # 启动脚本
├── requirements.txt            # Python 依赖包
├── data/                       # 数据存储目录
│   └── grpc_manager.db        # SQLite 数据库
├── api/                        # REST API 路由
│   ├── cluster_api.py         # 集群管理 API
│   ├── service_api.py         # 服务管理 API
│   ├── system_api.py          # 系统状态 API
│   └── config_api.py          # 配置管理 API
├── models/                     # 数据模型层
│   └── database.py            # 数据库模型和操作
├── services/                   # 业务逻辑服务层
│   ├── telepresence_service.py # Telepresence 集成服务
│   └── grpc_service.py        # gRPC 工具服务
├── static/                     # 前端静态资源
│   ├── css/                   # 样式文件
│   ├── js/                    # JavaScript 文件
│   │   └── app.js            # 主要前端逻辑
│   └── images/               # 图片资源
└── templates/                  # HTML 模板
    └── index.html             # 单页面应用模板

🚀 部署指南

生产环境部署

使用 Gunicorn + Nginx

  1. 安装 Gunicorn:
pip install gunicorn
  1. 启动应用:
cd grpc-web-manager
gunicorn -w 4 -b 127.0.0.1:5000 --timeout 120 app:app
  1. 配置 Nginx:
server {
    listen 80;
    server_name your-domain.com;

    location / {
        proxy_pass http://127.0.0.1:5000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

使用 Docker Compose(推荐)

# 克隆项目
git clone https://github.com/Crazydonelu/grpc-web-manager.git
cd grpc-web-manager

# 启动服务
docker-compose up -d

# 查看日志
docker-compose logs -f

使用 Kubernetes

apiVersion: apps/v1
kind: Deployment
metadata:
  name: grpc-web-manager
spec:
  replicas: 2
  selector:
    matchLabels:
      app: grpc-web-manager
  template:
    metadata:
      labels:
        app: grpc-web-manager
    spec:
      containers:
      - name: grpc-web-manager
        image: ghcr.io/Crazydonelu/grpc-web-manager:latest
        ports:
        - containerPort: 5000
        env:
        - name: FLASK_ENV
          value: "production"
---
apiVersion: v1
kind: Service
metadata:
  name: grpc-web-manager-service
spec:
  selector:
    app: grpc-web-manager
  ports:
  - port: 80
    targetPort: 5000
  type: LoadBalancer

⚙️ 配置说明

环境变量

变量名 默认值 说明
FLASK_ENV development Flask 运行环境
FLASK_DEBUG True 调试模式开关
DATABASE_PATH data/grpc_manager.db 数据库文件路径
HOST 0.0.0.0 服务监听地址
PORT 5000 服务监听端口

数据存储

  • SQLite 数据库: 存储集群、服务配置和系统设置
  • 文件系统: kubeconfig 文件和日志文件
  • 内存缓存: 临时状态和会话数据

🔒 安全考虑

生产环境安全

  1. 网络安全:

    • 使用 HTTPS 协议
    • 配置防火墙规则
    • 限制访问 IP 范围
  2. 认证授权:

    • 集成企业 SSO 系统
    • 实施 RBAC 权限控制
    • 定期轮换访问凭证
  3. 数据安全:

    • 加密敏感配置信息
    • 定期备份数据库
    • 审计操作日志

Kubernetes 安全

  • 使用最小权限原则配置 RBAC
  • 不要使用 cluster-admin 权限
  • 定期审查和更新 kubeconfig 文件
  • 使用 Network Policy 限制网络访问

🐛 故障排除

常见问题

Telepresence 连接失败

# 检查 Telepresence 版本
telepresence version

# 检查集群连接
kubectl cluster-info

# 查看详细日志
telepresence connect --verbose

gRPC 服务无法访问

# 测试网络连通性
telnet <service-host> <service-port>

# 检查 DNS 解析
nslookup <service-host>

# 使用 grpcurl 测试
grpcurl -plaintext <service-host>:<service-port> list

数据库问题

# 检查数据库文件权限
ls -la data/grpc_manager.db

# 重新初始化数据库
rm data/grpc_manager.db
python -c "from grpc-web-manager.models.database import db_manager; print('Database initialized')"

日志分析

应用日志位置:

  • 开发环境: 控制台输出
  • 生产环境: /var/log/grpc-web-manager/
  • Docker: docker logs <container-id>

🤝 贡献指南

我们欢迎各种形式的贡献!请查看 CONTRIBUTING.md 了解详细信息。

快速开始贡献

  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

开发环境设置

# 克隆项目
git clone https://github.com/Crazydonelu/grpc-web-manager.git
cd grpc-web-manager

# 创建虚拟环境
python -m venv venv
source venv/bin/activate  # Windows: venv\Scripts\activate

# 安装开发依赖
pip install -r requirements.txt
pip install -r requirements-dev.txt

# 运行测试
pytest tests/

# 启动开发服务器
cd grpc-web-manager
python start.py

📄 许可证

本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。

🙏 致谢

📞 支持


⭐ 如果这个项目对你有帮助,请给我们一个 Star!

About

一个跨平台的 gRPC 服务管理 WebUI 工具,支持 Windows、Linux、macOS 系统。通过 Web 界面管理 Kubernetes 集群连接和 gRPC 服务调用。

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors