安装部署
本指南介绍 OpsHub 的多种部署方式,请根据实际环境选择合适的部署方案。
环境要求
| 组件 | 最低版本 | 推荐版本 |
|---|---|---|
| Go | 1.21+ | 1.24+ |
| Node.js | 18+ | 20+ |
| MySQL | 8.0+ | 8.0+ |
| Redis | 6.0+ | 7.0+ |
| Docker | 20.10+ | 24.0+ |
| Kubernetes | 1.24+ | 1.28+ |
| Helm | 3.0+ | 3.14+ |
部署方式
Docker Compose 是最简单的部署方式,一键启动所有服务,适合快速体验和开发测试。
1. 克隆项目
git clone https://github.com/ydcloud-dy/opshub.git
cd opshub
2. 启动服务
# 启动所有服务
docker-compose up -d
# 查看服务状态
docker-compose ps
# 查看日志
docker-compose logs -f
3. 访问系统
| 服务 | 地址 |
|---|---|
| 前端 | http://localhost:5173 |
| 后端 API | http://localhost:9876 |
| Swagger 文档 | http://localhost:9876/swagger/index.html |
4. 常用命令
# 停止服务
docker-compose down
# 停止并删除数据卷
docker-compose down -v
# 重启单个服务
docker-compose restart opshub-backend
# 查看服务日志
docker-compose logs -f opshub-backend
使用 Helm Chart 在 Kubernetes 上部署 OpsHub,适合生产环境,支持高可用和自动伸缩。
前置条件
- Kubernetes 1.24+ 集群
- Helm 3.0+
- kubectl 已配置好集群访问
- Ingress Controller(如 nginx-ingress)
- StorageClass(如需持久化存储)
1. 克隆项目
git clone https://github.com/ydcloud-dy/opshub.git
cd opshub
2. 快速安装(默认配置)
# 创建命名空间并安装
helm install opshub ./charts/opshub \
--namespace opshub \
--create-namespace
3. 自定义配置安装
cd charts/opshub
# 编辑 values.yaml 文件后安装
helm upgrade --install opshub -n opshub .
values.yaml 核心配置
# 后端配置
backend:
replicaCount: 2
image:
repository: docker.1ms.run/dyclouds/opshub-api
tag: latest
resources:
requests:
memory: "256Mi"
cpu: "100m"
limits:
memory: "512Mi"
cpu: "500m"
# 前端配置
frontend:
replicaCount: 2
image:
repository: docker.1ms.run/dyclouds/opshub-web
tag: latest
# MySQL 配置
mysql:
enabled: true
auth:
rootPassword: "OpsHub@2026"
database: opshub
persistence:
enabled: true
size: 20Gi
# Redis 配置
redis:
enabled: true
auth:
password: "OpsHub@Redis"
# Ingress 配置
ingress:
enabled: true
className: nginx
hosts:
- host: opshub.example.com
paths:
- path: /
pathType: Prefix
4. 使用外部数据库
# 禁用内置 MySQL
mysql:
enabled: false
# 外部 MySQL 配置
externalDatabase:
host: mysql.example.com
port: 3306
database: opshub
username: opshub
password: "your-mysql-password"
# 禁用内置 Redis
redis:
enabled: false
# 外部 Redis 配置
externalRedis:
host: redis.example.com
port: 6379
password: "your-redis-password"
5. 验证安装
# 查看 Pod 状态
kubectl get pods -n opshub
# 查看所有资源
kubectl get all -n opshub
# 查看 Ingress
kubectl get ingress -n opshub
6. 访问系统
如果配置了 Ingress,通过域名访问:
https://opshub.yourcompany.com
如果没有 Ingress,可以使用端口转发:
# 转发前端服务
kubectl port-forward svc/opshub-frontend 8080:80 -n opshub
# 转发后端服务(另一个终端)
kubectl port-forward svc/opshub-backend 9876:9876 -n opshub
# 访问
# 前端: http://localhost:8080
# API: http://localhost:9876
7. 运维命令
# 查看 Pod 日志
kubectl logs -f deployment/opshub-backend -n opshub
# 进入 Pod 调试
kubectl exec -it deployment/opshub-backend -n opshub -- /bin/sh
# 重启 Deployment
kubectl rollout restart deployment/opshub-backend -n opshub
# 扩缩容
kubectl scale deployment opshub-backend --replicas=5 -n opshub
# 升级
helm upgrade opshub ./charts/opshub -n opshub -f my-values.yaml
# 回滚
helm rollback opshub -n opshub
# 卸载
helm uninstall opshub -n opshub
源码部署适合开发调试和二次开发场景,可以更灵活地修改和调试代码。
1. 克隆项目
git clone https://github.com/ydcloud-dy/opshub.git
cd opshub
2. 初始化数据库
# 创建数据库
mysql -u root -p -e "CREATE DATABASE opshub CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
# 导入初始化脚本(如有)
mysql -u root -p opshub < migrations/init.sql
3. 配置后端
# 复制配置文件
cp config/config.yaml.example config/config.yaml
# 编辑 config.yaml 修改数据库连接信息
vim config/config.yaml
4. 启动后端
# 安装依赖
go mod download
# 启动服务
go run main.go server
5. 启动前端
cd web
# 安装依赖
npm install
# 开发模式
npm run dev
# 或者构建生产版本
npm run build
6. 访问系统
| 服务 | 地址 |
|---|---|
| 前端 | http://localhost:5173 |
| 后端 API | http://localhost:9876 |
| Swagger 文档 | http://localhost:9876/swagger/index.html |
环境变量说明
| 变量名 | 描述 | 默认值 |
|---|---|---|
OPSHUB_SERVER_MODE |
运行模式 (debug/release) | debug |
OPSHUB_SERVER_HTTP_PORT |
HTTP 端口 | 9876 |
OPSHUB_SERVER_JWT_SECRET |
JWT 密钥 | - |
OPSHUB_SERVER_JWT_EXPIRE |
JWT 过期时间 | 24h |
OPSHUB_DATABASE_HOST |
MySQL 地址 | 127.0.0.1 |
OPSHUB_DATABASE_PORT |
MySQL 端口 | 3306 |
OPSHUB_DATABASE_DATABASE |
数据库名 | opshub |
OPSHUB_DATABASE_USERNAME |
数据库用户名 | root |
OPSHUB_DATABASE_PASSWORD |
数据库密码 | - |
OPSHUB_REDIS_HOST |
Redis 地址 | 127.0.0.1 |
OPSHUB_REDIS_PORT |
Redis 端口 | 6379 |
OPSHUB_REDIS_PASSWORD |
Redis 密码 | - |
OPSHUB_REDIS_DB |
Redis 数据库 | 0 |
默认账号
| 用户名 | 密码 | 角色 |
|---|---|---|
admin |
123456 |
超级管理员 |
安全提示:首次登录后请立即修改默认密码!
常见问题
1. 数据库连接失败
- 检查 MySQL 服务是否正常运行
- 确认数据库连接配置是否正确
- 检查防火墙是否开放 3306 端口
- 确认数据库用户权限
2. Redis 连接失败
- 检查 Redis 服务是否正常运行
- 确认 Redis 配置(地址、端口、密码)
- 检查防火墙是否开放 6379 端口
3. 前端无法访问后端 API
- 检查后端服务是否正常运行
- 确认 Nginx 代理配置正确
- 检查 API 地址配置
4. Helm 安装后 Pod 启动失败
# 查看 Pod 日志
kubectl logs -f <pod-name> -n opshub
# 查看 Pod 详情
kubectl describe pod <pod-name> -n opshub
# 常见原因:
# - 镜像拉取失败:检查镜像名称和网络
# - PVC 创建失败:检查 StorageClass 是否存在
# - 配置错误:检查 values.yaml 配置
# - 资源不足:增加节点资源或调整 requests/limits
5. Ingress 无法访问
- 确认 Ingress Controller 已安装并运行
- 检查域名 DNS 解析是否正确
- 确认 Ingress 规则配置正确
- 检查 TLS 证书是否有效(如启用 HTTPS)