# deploy-system **Repository Path**: Davin168/deploy-system ## Basic Information - **Project Name**: deploy-system - **Description**: 运维系统 - **Primary Language**: Go - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-07-22 - **Last Updated**: 2026-07-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 运维系统 运维系统是一套面向企业基础设施与应用交付的集中式运维平台。系统由 Vue 前端、Go 控制面和部署在目标环境的 Agent 组成,统一管理 Kubernetes、Linux 主机、Docker 容器、应用、日志、备份、发布和告警。 > 当前内置 Agent 发布版本:`3.0.5` > > 支持平台:`linux/amd64` ## 界面预览 ### 平台运行概览 首页按环境、Agent、应用和任务展示平台整体状态,不依赖控制面宿主机的资源指标。 ![平台运行概览](assets/screenshots/home.png) ### Kubernetes YAML 导入 支持多文档 YAML、`kind: List` 和顶层数组,解析后再通过所选 Agent 应用到目标集群。 ![Kubernetes YAML 导入](assets/screenshots/yaml-import.png) ### 统一日志查询 按环境、Agent 和日志类型统一查询 Kubernetes、宿主机与数据库日志。 ![统一日志查询](assets/screenshots/log-query.png) ## 核心能力 | 领域 | 能力 | | --- | --- | | 环境与 Agent | Agent 注册、心跳、多 worker 角色、健康状态、一键更新 | | 主机与应用 | Linux 主机、远程 SSH relay、Docker、Systemd、进程与自定义脚本服务 | | Kubernetes | 集群安装、YAML 导入、资源编排、ConfigMap、工作负载与日志 | | 发布与分发 | 镜像发布、上传中心、MinIO 对象存储、下载网关、Agent 分发 | | 应用迁移 | namespace 级服务、镜像、中间件和数据库迁移编排 | | 日志与备份 | 统一查询、Tail 会话、文件/数据库备份、分片传输和校验 | | 监控与告警 | CPU、内存、磁盘、网络、数据库指标、告警规则与通知渠道 | | 安全与审计 | JWT 与 refresh token、RBAC、按钮级权限、操作审计、Agent 身份校验 | ## 系统架构 ```text Browser | | HTTP / WebSocket v Vue 3 + Vite + Element Plus | | REST API v Go + Gin 控制面 |-- PostgreSQL 业务数据 |-- Redis 缓存与运行状态 |-- MinIO 上传文件与分发制品 | | Command / Heartbeat / Metrics / Logs v Agent main |-- collector worker |-- log worker |-- backup worker | |-- Local host / Docker / Kubernetes `-- Remote hosts through SSH relay ``` 新增的远程执行能力应优先遵循“后端编排、Agent 执行”的主链:后端创建命令,Agent 通过心跳拉取并执行,最后回传状态与结果。 ## 项目结构 ```text deploy-system/ |-- frontend/ Vue 3 前端 |-- backend/ Go/Gin 控制面 |-- backend/agent/ Agent 执行面 |-- charts/ Helm Chart 与 Kubernetes 配置 |-- debug/ 测试、调试和回归脚本 |-- assets/ README 等公开静态资源 |-- LICENSE `-- README.md ``` ## 环境要求 - Go `1.25` - Node.js `20 LTS` 或更高版本 - PostgreSQL - Redis - MinIO - 构建 Agent 离线镜像时需要 Docker 与 Docker Compose 控制面数据库使用 PostgreSQL。MySQL 和达梦用于被管理业务数据库的部署、监控或迁移,不替代控制面 PostgreSQL。 ## 本地开发 ### 1. 启动后端 启动前至少配置以下环境变量: | 变量 | 说明 | | --- | --- | | `DATABASE_HOST` / `DATABASE_PORT` | PostgreSQL 地址与端口 | | `DATABASE_USER` / `DATABASE_PASSWORD` / `DATABASE_NAME` | PostgreSQL 凭据与库名 | | `REDIS_HOST` / `REDIS_PORT` / `REDIS_PASSWORD` | Redis 连接信息 | | `MINIO_ENDPOINT` | MinIO API 地址 | | `MINIO_ACCESS_KEY` / `MINIO_SECRET_KEY` | MinIO 凭据 | | `JWT_SECRET` | 生产环境必须使用至少 32 字符的随机值 | | `CORS_ALLOWED_ORIGINS` | 允许访问 API/WebSocket 的前端 origin,多个值使用逗号分隔 | ```bash cd backend go mod download go run main.go ``` 后端默认监听 `3001` 端口,可通过 `SERVER_PORT` 修改。 ### 2. 启动前端 ```bash cd frontend npm install npm run dev ``` 前端开发服务默认监听 `3000`,`/api` 代理到 `http://127.0.0.1:3001`。也可通过 `VITE_API_BASE_URL` 指定 API 地址。 ### 3. 启动 Agent ```bash cd backend/agent go run . -config config.yaml -server http://127.0.0.1:3001 -name local-agent -env dev ``` `config.yaml` 应从 `config.example.yaml` 生成并只保存在部署环境,不应提交到 Git。 ## Agent 发布与更新 构建 `linux/amd64` 离线安装包: ```powershell powershell -ExecutionPolicy Bypass -File backend/agent/scripts/build_agent_release.ps1 powershell -ExecutionPolicy Bypass -File debug/agent-update/verify-release.ps1 ``` 构建产物包含 `main`、`collector`、`log` 和 `backup` 四个 Agent 角色。生成的二进制、镜像归档和安装包属于制品,不进入 Git;应发布到后端制品目录、对象存储或发行版附件。 Agent `3.0.5` 及以上版本支持在 Agent 详情页一键更新。更新过程会校验平台、文件大小和 SHA-256,保留现有配置与数据,并按角色重启 Agent 容器。 ## 回归校验 ```bash cd frontend npm run build cd ../backend go build cd agent go build ./... cd ../.. powershell -ExecutionPolicy Bypass -File debug/checks/check-source-size.ps1 ``` ## 安全约束 - 不提交 `.env`、`server.env`、Agent `config.yaml`、kubeconfig、SSH 私钥或任何真实凭据。 - 不在源码和截图中保留生产 IP、主机名、租户名或内部服务地址。 - 用户输入的远程命令、路径、YAML 和上传文件必须经过权限校验与范围限制。 - 生产环境必须显式配置数据库、Redis、MinIO、JWT、Agent 引导令牌和 CORS 白名单。 - 上传文件、日志、数据目录、离线安装包与镜像包均不进入 Git。 ## 许可证 本项目使用 [木兰宽松许可证第 2 版](LICENSE)。