docs: 同步 README 与 docs 至最新部署与版本方案
- 更新三种部署方式:embed 单容器、./aiops 根目录二进制 - 补充版本管理、release、lghost/aiops 镜像推送说明 - 修正过时的 docker 4 容器、backend/aiops、run.sh start 等描述 - 更新 project-structure、deployment、quick-start 等核心文档
This commit is contained in:
1 parent
9f5ce249f1
commit
286decf0b0
8 files changed
+593
-487
No files matched your search
@@ -13,10 +13,11 @@
|
||||
|
||||
### 后端
|
||||
- Go 1.24 / Gin Web Framework
|
||||
- GORM (ORM) / MySQL 8.0 / Redis 7
|
||||
- GORM (ORM) / MySQL 8.0 / Redis 7 / SQLite (local 模式)
|
||||
- JWT 认证 / Zap 日志 / Viper 配置
|
||||
- WebSocket (Gorilla) / PTY 终端 (creack/pty)
|
||||
- 自研轻量 Kubernetes HTTP 客户端(channel.k8s.io WebSocket 协议)
|
||||
- go:embed 嵌入前端静态资源(单二进制 / 单容器部署)
|
||||
|
||||
### Agent
|
||||
- Go 1.24 静态编译 (CGO_ENABLED=0)
|
||||
@@ -27,135 +28,113 @@
|
||||
|
||||
| 方式 | 命令 | 架构 | 适用场景 |
|
||||
|------|------|------|----------|
|
||||
| **① 独立二进制** | `./run.sh build` → `./run.sh binary` | 单文件,前后端一体 | 无 Docker/K8s 环境 |
|
||||
| **② Kubernetes** | `./run.sh kubernetes deploy` | Embed 单容器 + MySQL/Redis StatefulSet | 生产集群,devops 命名空间 |
|
||||
| **③ Docker Compose** | `./run.sh docker up` | 4 容器 (MySQL+Redis+Backend+Nginx) | 单机生产,开发/测试 |
|
||||
| **① 独立二进制** | `./run.sh build` → `./aiops` | 单文件 embed,输出到项目根目录 | 无 Docker/K8s,边缘/本机 |
|
||||
| **② Docker Compose** | `./run.sh docker up` | 3 容器 (MySQL + Redis + AIOps embed) | 单机生产、演示 |
|
||||
| **③ Kubernetes** | `./run.sh kubernetes deploy` | embed 单容器 + MySQL/Redis StatefulSet | 生产集群,`devops` 命名空间 |
|
||||
|
||||
统一入口 `./run.sh`,详见 `./run.sh help`。
|
||||
|
||||
### 版本与镜像
|
||||
|
||||
- **发布版本**:Git tag 为权威来源(如 `v1.5.0`)
|
||||
- **Docker 镜像**:`lghost/aiops:<tag>`(Docker Hub)
|
||||
- **二进制版本**:`./aiops version` / `GET /version`
|
||||
- **一键发版**:`./run.sh release v1.5.0`(打 tag → 编译二进制 → 构建镜像 → 推送 Docker Hub → 更新 K8s manifest)
|
||||
|
||||
```bash
|
||||
docker login
|
||||
./run.sh release v1.5.0
|
||||
./aiops version # 查看二进制版本
|
||||
curl http://localhost:8080/version # 查看运行版本
|
||||
```
|
||||
|
||||
## 快速开始
|
||||
|
||||
### Docker Compose 部署
|
||||
|
||||
```bash
|
||||
# 一键启动全部服务 (MySQL + Redis + 后端 + Nginx 前端)
|
||||
./run.sh docker up
|
||||
|
||||
# 访问
|
||||
# 前端: http://localhost:80
|
||||
# 后端: http://localhost:8080
|
||||
# 健康检查: http://localhost:8080/health
|
||||
|
||||
# 管理
|
||||
./run.sh docker logs # 查看日志
|
||||
./run.sh docker ps # 容器状态
|
||||
./run.sh docker down # 停止
|
||||
```
|
||||
|
||||
### Kubernetes 部署
|
||||
|
||||
```bash
|
||||
# 一键部署到 devops 命名空间
|
||||
./run.sh kubernetes deploy
|
||||
|
||||
# 访问: http://<NODE_IP>:30080
|
||||
|
||||
# 运维
|
||||
./run.sh kubernetes status # 资源状态
|
||||
./run.sh kubernetes logs # 应用日志
|
||||
./run.sh kubernetes upgrade # 重新构建 + 滚动更新
|
||||
./run.sh kubernetes exec # 进入容器 Shell
|
||||
./run.sh kubernetes mysql # 进入 MySQL CLI
|
||||
./run.sh kubernetes redis # 进入 Redis CLI
|
||||
./run.sh kubernetes scale 3 # 扩缩容
|
||||
./run.sh kubernetes port-forward # 端口转发到本机
|
||||
./run.sh kubernetes delete # 删除所有 K8s 资源(保留 PVC)
|
||||
./run.sh kubernetes build # 仅构建 embed 镜像
|
||||
```
|
||||
|
||||
### 独立二进制部署
|
||||
|
||||
```bash
|
||||
# 编译(前端自动嵌入)
|
||||
./run.sh build
|
||||
|
||||
# 启动
|
||||
./backend/aiops # 默认 SQLite, 端口 8080
|
||||
./backend/aiops --port 9090 # 自定义端口
|
||||
./backend/aiops --db-driver mysql --db-host ... # MySQL 模式
|
||||
```
|
||||
|
||||
### 本地开发
|
||||
|
||||
```bash
|
||||
./run.sh dev # 前端 :5173 + 后端 :8080 (热重载)
|
||||
|
||||
# 单独启动
|
||||
cd frontend && npm run dev
|
||||
cd backend && go run .
|
||||
./run.sh stop # 停止
|
||||
./run.sh status # 查看状态
|
||||
```
|
||||
|
||||
### Docker Compose 部署
|
||||
|
||||
```bash
|
||||
./run.sh docker up # 构建并启动 (MySQL + Redis + AIOps)
|
||||
./run.sh docker up v1.5.0 # 指定版本构建
|
||||
./run.sh docker push v1.5.0 # 构建并推送到 lghost/aiops
|
||||
|
||||
# 访问(前后端同一端口)
|
||||
# http://localhost:8080
|
||||
# http://localhost:8080/version
|
||||
```
|
||||
|
||||
### Kubernetes 部署
|
||||
|
||||
```bash
|
||||
./run.sh kubernetes deploy # 构建镜像 + 全量部署
|
||||
./run.sh kubernetes upgrade v1.5.0 # 指定版本滚动更新
|
||||
./run.sh kubernetes push v1.5.0 # 构建并推送 Docker Hub
|
||||
|
||||
# 访问: http://<NODE_IP>:30080
|
||||
# 镜像: lghost/aiops:<tag>
|
||||
```
|
||||
|
||||
### 独立二进制部署
|
||||
|
||||
```bash
|
||||
./run.sh build # 编译到项目根目录 ./aiops
|
||||
./run.sh build tag v1.5.0 # 指定版本编译
|
||||
./aiops version # 查看版本
|
||||
./aiops --mode local # 本地模式 (SQLite + redka)
|
||||
./run.sh binary upgrade # 停服 → 重编译 → 后台启动
|
||||
```
|
||||
|
||||
> Mac 上 `./run.sh build` 产出 **darwin** 二进制,仅本机可用。
|
||||
> Linux 服务器请在 Linux 上构建,或使用 Docker/K8s embed 镜像(`Dockerfile.embed` 固定 `GOOS=linux GOARCH=amd64`)。
|
||||
|
||||
### Agent 构建
|
||||
|
||||
```bash
|
||||
./run.sh build agent # 交叉编译 Agent (amd64+arm64)
|
||||
./run.sh build agent # 交叉编译 Agent (linux-amd64 + linux-arm64)
|
||||
|
||||
# 验证
|
||||
./agent/bin/aiops-agent-linux-amd64 version
|
||||
./agent/bin/aiops-agent-linux-amd64 output -top-n 3 # Zabbix 风格指标输出
|
||||
./agent/aiops-agent-linux-amd64 version
|
||||
```
|
||||
|
||||
### 默认账号
|
||||
|
||||
- 用户名: `admin`
|
||||
- 密码: `123456`
|
||||
| 用户名 | 密码 | 角色 |
|
||||
|--------|------|------|
|
||||
| admin | 123456 | 超级管理员 |
|
||||
| ops01 | 123456 | 运维 |
|
||||
| dev01 | 123456 | 开发 |
|
||||
|
||||
## 项目结构
|
||||
|
||||
```
|
||||
aiops/
|
||||
├── frontend/ # 前端 (React + TypeScript)
|
||||
│ ├── src/components/ # dashboard/server/kubernetes/monitor/deploy/aiops...
|
||||
│ ├── src/services/ # API + HTTP 封装
|
||||
│ ├── src/store/ # Zustand 状态管理
|
||||
│ └── Dockerfile # nginx:alpine 镜像
|
||||
│ ├── src/components/ # dashboard/server/k8s/monitor/deploy/aiops...
|
||||
│ └── Dockerfile # [legacy] 独立 Nginx 镜像,Compose 已改用 embed
|
||||
│
|
||||
├── backend/ # 后端 (Go + Gin)
|
||||
│ ├── main.go # 入口 (was cmd/main.go)
|
||||
│ ├── embed.go # 前端嵌入 (was cmd/embed.go)
|
||||
│ ├── config/ # 配置加载 (was internal/config)
|
||||
│ ├── controller/ # HTTP 处理器 (was internal/api/handlers)
|
||||
│ ├── middleware/ # JWT/日志/CORS (was internal/api/middleware)
|
||||
│ ├── router/ # 路由注册 (was internal/api/routes)
|
||||
│ ├── model/ # GORM 数据模型 (was internal/models)
|
||||
│ ├── cloud/ # 云平台对接 (was internal/cloud)
|
||||
│ ├── dto/ # 请求/响应传输对象 ★
|
||||
│ ├── repository/ # 数据访问层 ★
|
||||
│ ├── service/ # 业务逻辑层 ★
|
||||
│ ├── utils/ # 工具函数 ★
|
||||
│ ├── seed/ # 种子数据 (was cmd/seed.go)
|
||||
│ ├── static/ # 前端构建产物 (was cmd/static/)
|
||||
│ ├── pkg/ # 公共包 (database/kubernetesclient/remoteexec/toolinstaller)
|
||||
│ └── Dockerfile # 3 阶段构建 (Go build → Agent → Alpine Runtime)
|
||||
│ ├── main.go # 应用入口
|
||||
│ ├── embed.go # go:embed 前端静态资源
|
||||
│ ├── static/ # 前端构建产物(embed 目标目录)
|
||||
│ ├── controller/ # HTTP 处理器
|
||||
│ ├── router/ # 路由注册
|
||||
│ ├── model/ # GORM 数据模型
|
||||
│ ├── pkg/ # database/kubernetesclient/remoteexec/...
|
||||
│ └── Dockerfile # [legacy] 分离式后端镜像
|
||||
│
|
||||
├── agent/ # 监控 Agent
|
||||
│ ├── collector/ # /proc 指标采集
|
||||
│ ├── task/ # 远程任务执行
|
||||
│ └── reporter/ # HTTP 上报
|
||||
│
|
||||
├── deploy/kubernetes/ # Kubernetes 部署清单
|
||||
│ ├── namespace.yaml # devops 命名空间
|
||||
│ ├── secret.yaml # 密钥
|
||||
│ ├── configmap.yaml # 配置
|
||||
│ ├── mysql.yaml # MySQL StatefulSet
|
||||
│ ├── redis.yaml # Redis StatefulSet
|
||||
│ ├── deployment.yaml # AIOps Deployment + NodePort Service
|
||||
│ └── ingress.yaml # Ingress 路由
|
||||
│
|
||||
├── docker-compose.yml # Docker Compose 4 容器编排
|
||||
├── Dockerfile.embed # Embed 单容器镜像 (前端→后端→Agent→Runtime)
|
||||
├── agent/ # 监控 Agent(独立 Go module)
|
||||
├── deploy/kubernetes/ # K8s 部署清单 (devops 命名空间)
|
||||
├── docker-compose.yml # MySQL + Redis + AIOps embed(3 容器)
|
||||
├── docker-compose.k8s.yml # 单应用容器(连接外部 DB)
|
||||
├── Dockerfile.embed # embed 单容器镜像(推荐)
|
||||
├── run.sh # 统一入口脚本
|
||||
└── Makefile # 快捷命令
|
||||
└── aiops # 独立二进制产物(gitignore,项目根目录)
|
||||
```
|
||||
|
||||
## 核心功能
|
||||
@@ -164,22 +143,26 @@ aiops/
|
||||
|------|------|
|
||||
| 仪表盘 | 成本统计、告警聚合、Top 资源、SSL 提醒、趋势图表 |
|
||||
| 资产管理 | 服务器 CRUD、批量导入、WebShell、云账号/域名/账单 |
|
||||
| Kubernetes 管理 | 多集群管理、Deployment 三模式编辑器(查看/可视化编辑/YAML)、Node/Pod/Service/Ingress、kubectl 终端、事件聚合、多集群对比、Namespace 管理 |
|
||||
| 应用发布 | CI/CD 流水线(GitLab CI 风格可视化)、发布配置、SSH 主机 + Kubernetes 双路径部署 |
|
||||
| 监控中心 | 监控大屏、主机指标(CPU/内存/磁盘/网络/进程/端口/FD)、告警规则引擎、飞书/钉钉通知 |
|
||||
| 自动化运维 | 定时任务、脚本库(Shell/Python)、远程执行(Go-native SSH)、Ansible |
|
||||
| AIOps 智能 | AI 智能助手(6 种 LLM)、告警分析、容量预测 |
|
||||
| Kubernetes 管理 | 多集群、Deployment 三模式编辑器、Pod 终端/文件浏览、事件聚合 |
|
||||
| 应用发布 | CI/CD 流水线、发布配置、SSH + K8s 双路径部署 |
|
||||
| 监控中心 | 监控大屏、主机指标、告警引擎、飞书/钉钉通知 |
|
||||
| 自动化运维 | 定时任务、脚本库、远程执行(Go-native SSH) |
|
||||
| AIOps 智能 | AI 助手、告警分析、容量预测 |
|
||||
| 资源申请 | 云服务器/应用部署申请审批 |
|
||||
| 系统管理 | 用户管理、角色权限、操作审计、终端审计、凭证配置、系统设置 |
|
||||
| 系统管理 | 用户/角色、操作审计、凭证配置 |
|
||||
|
||||
### Kubernetes 管理亮点
|
||||
## 文档
|
||||
|
||||
- **Deployment 三模式编辑器**: 查看模式 / 可视化编辑(5 Tab: 基本信息·容器信息·存储挂载·高级设置·服务路由)/ YAML 编辑(CodeMirror 6 语法高亮)
|
||||
- **StatefulSet/DaemonSet**: 完整详情页(更新策略/选择器/PVC 模板/Init Containers)
|
||||
- **Pod 交互**: 文件浏览器(上传/下载)、exec 终端(WebSocket channel.k8s.io)、日志流
|
||||
- **集群运维**: 事件聚合看板、多集群对比(雷达图/柱状图)、Node 详情(资源分配率/污点/容器运行时)、Namespace CRUD(资源配额)
|
||||
- **自研轻量客户端**: 不依赖 client-go,net/http + WebSocket 直连 K8s API
|
||||
详细开发文档见 [docs/README.md](./docs/README.md)。
|
||||
|
||||
| 文档 | 说明 |
|
||||
|------|------|
|
||||
| [快速开始](./docs/quick-start.md) | 环境准备、本地开发 |
|
||||
| [部署指南](./docs/deployment.md) | 二进制 / Docker / K8s / 版本发版 |
|
||||
| [开发规范](./docs/development-guide.md) | 代码规范、Git 工作流 |
|
||||
| [项目结构](./docs/project-structure.md) | 目录结构说明 |
|
||||
| [CLAUDE.md](./CLAUDE.md) | AI 助手指引(完整命令参考) |
|
||||
|
||||
## License
|
||||
|
||||
MIT
|
||||
MIT
|
||||
Reference in new issue
Block a user