English | 中文
一个跨平台的 gRPC 服务管理 WebUI 工具,支持 Windows、Linux、macOS 系统。通过 Web 界面管理 Kubernetes 集群连接和 gRPC 服务调用。
管理 Kubernetes 集群配置,支持连接状态监控和一键连接
- 🌐 跨平台支持: 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 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个系统配置项: 包括工具路径、超时设置、日志级别等
- 运行
python create_example_db.py创建示例数据库 - 示例数据库文件:
data/grpc_manager_example.db - 应用启动时会自动创建
data/grpc_manager.db(如果不存在) - 你可以复制示例数据库作为起始点:
cp data/grpc_manager_example.db data/grpc_manager.db
- 实际的数据库文件
grpc_manager.db已在.gitignore中排除 - 只有示例数据库文件会被提交到版本控制
- 你的个人配置和敏感信息不会被意外提交
- Python 3.8+
- Telepresence 2.x(需要单独安装)
- grpcurl 工具(可选,用于 gRPC 调用)
# 使用 Chocolatey
choco install telepresence
# 或下载二进制文件
# 访问 https://www.telepresence.io/docs/latest/install/brew install datawire/blackbird/telepresencesudo curl -fL https://app.getambassador.io/download/tel2/linux/amd64/latest/telepresence -o /usr/local/bin/telepresence
sudo chmod +x /usr/local/bin/telepresencego install github.com/fullstorydev/grpcurl/cmd/grpcurl@latest# macOS
brew install grpcurl
# Ubuntu/Debian
apt-get install grpcurl
# Windows (Chocolatey)
choco install grpcurl- 在"集群管理"页面添加 Kubernetes 集群
- 配置 kubeconfig 文件路径
- 点击"连接"按钮建立 Telepresence 连接
- 查看连接状态
- 在"服务管理"页面添加 gRPC 服务
- 配置服务 URL 和端口
- 测试服务连接状态
- 启动 gRPC UI 进行调试
- 选择已配置的 gRPC 服务
- 输入方法名和请求参数
- 执行命令并查看结果
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:
pip install gunicorn- 启动应用:
cd grpc-web-manager
gunicorn -w 4 -b 127.0.0.1:5000 --timeout 120 app:app- 配置 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;
}
}# 克隆项目
git clone https://github.com/Crazydonelu/grpc-web-manager.git
cd grpc-web-manager
# 启动服务
docker-compose up -d
# 查看日志
docker-compose logs -fapiVersion: 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 文件和日志文件
- 内存缓存: 临时状态和会话数据
-
网络安全:
- 使用 HTTPS 协议
- 配置防火墙规则
- 限制访问 IP 范围
-
认证授权:
- 集成企业 SSO 系统
- 实施 RBAC 权限控制
- 定期轮换访问凭证
-
数据安全:
- 加密敏感配置信息
- 定期备份数据库
- 审计操作日志
- 使用最小权限原则配置 RBAC
- 不要使用
cluster-admin权限 - 定期审查和更新 kubeconfig 文件
- 使用 Network Policy 限制网络访问
# 检查 Telepresence 版本
telepresence version
# 检查集群连接
kubectl cluster-info
# 查看详细日志
telepresence connect --verbose# 测试网络连通性
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 了解详细信息。
- Fork 项目
- 创建功能分支:
git checkout -b feature/amazing-feature - 提交更改:
git commit -m 'Add amazing feature' - 推送分支:
git push origin feature/amazing-feature - 创建 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 文件了解详情。
- Telepresence - Kubernetes 本地开发工具
- grpcurl - gRPC 命令行工具
- Flask - Python Web 框架
- Bootstrap - 前端 UI 框架
⭐ 如果这个项目对你有帮助,请给我们一个 Star!

