Logan.Li a8305de0f5 fix(k8s): Deployment 存储挂载六种卷类型 YAML 双向映射
- 抽取 deployment-volume-utils,修正 PVC/NFS/CM/Secret/HostPath/EmptyDir 读写
- 保存时保留系统卷与 serviceAccount 挂载,合并用户卷与挂载点
- 挂载支持 subPath;ConfigMap/Secret items 支持 key:path 简写
2026-06-26 14:57:09 +08:00

AIOps 智能运维平台

企业级云原生智能运维解决方案,集成资产管理、Kubernetes 管理、应用发布、监控告警、自动化运维和 AI 智能分析。

技术栈

前端

  • React 19 + TypeScript + Vite
  • Tailwind CSS + shadcn/ui
  • Zustand (状态管理) / TanStack Query (数据获取)
  • Recharts (图表) / Lucide React (图标)
  • CodeMirror 6 (YAML 编辑器) / xterm.js (WebSocket 终端)

后端

  • Go 1.24 / Gin Web Framework
  • GORM (ORM) / MySQL 8.0 / Redis 7
  • JWT 认证 / Zap 日志 / Viper 配置
  • WebSocket (Gorilla) / PTY 终端 (creack/pty)
  • 自研轻量 Kubernetes HTTP 客户端(channel.k8s.io WebSocket 协议)

Agent

  • Go 1.24 静态编译 (CGO_ENABLED=0)
  • /proc 指标采集 + 远程任务双通道
  • 支持 linux-amd64 / linux-arm64 / darwin-arm64

三种部署方式

方式 命令 架构 适用场景
① 独立二进制 ./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,详见 ./run.sh help。

快速开始

Docker Compose 部署

# 一键启动全部服务 (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 部署

# 一键部署到 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 镜像

独立二进制部署

# 编译(前端自动嵌入)
./run.sh build

# 启动
./backend/aiops                                      # 默认 SQLite, 端口 8080
./backend/aiops --port 9090                         # 自定义端口
./backend/aiops --db-driver mysql --db-host ...     # MySQL 模式

本地开发

./run.sh dev               # 前端 :5173 + 后端 :8080 (热重载)

# 单独启动
cd frontend && npm run dev
cd backend && go run .

Agent 构建

./run.sh build agent       # 交叉编译 Agent (amd64+arm64)

# 验证
./agent/bin/aiops-agent-linux-amd64 version
./agent/bin/aiops-agent-linux-amd64 output -top-n 3    # Zabbix 风格指标输出

默认账号

  • 用户名: admin
  • 密码: 123456

项目结构

aiops/
├── frontend/                    # 前端 (React + TypeScript)
│   ├── src/components/          # dashboard/server/kubernetes/monitor/deploy/aiops...
│   ├── src/services/            # API + HTTP 封装
│   ├── src/store/               # Zustand 状态管理
│   └── Dockerfile               # nginx:alpine 镜像
│
├── 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)
│
├── 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)
├── run.sh                       # 统一入口脚本
└── Makefile                     # 快捷命令

核心功能

模块 说明
仪表盘 成本统计、告警聚合、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 三模式编辑器: 查看模式 / 可视化编辑(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

License

MIT

S
Description
No description provided
Readme GPL-3.0
78 MiB
0 Stars 0 Watchers 0 Forks
Languages
TypeScript 62.9%
Go 35.2%
Shell 1%
CSS 0.4%
Python 0.2%
Other 0.2%