从 0 到 1 搭建 Go + React 运维平台:权限、K8s、告警、日志一体化实战(附 50+ 页面截图)
摘要(可直接粘贴到 CSDN)
本文分享我用 Go + React 搭建内部运维平台
Yunshu的完整实践:系统管理、RBAC/Casbin 权限、Kubernetes 可视化管理、项目化告警中心、日志采集与实时查看。文章包含架构设计、核心功能拆解、数据库 ER 思路、排障路径,以及 50+ 页面截图。适合正在做中后台平台化、DevOps 平台、SRE 工具链整合的同学参考。推荐标签 :
golangreact.jskubernetesdevops运维平台权限系统告警系统日志系统
一、项目背景:为什么要做"一体化运维平台"?
很多团队都会遇到这些痛点:
- 权限系统和项目系统是两套逻辑,协作成本高
- K8s 运维过度依赖命令行,排障效率受经验影响大
- 告警规则、值班、通知渠道分散,链路追踪困难
- 日志采集与日志查看入口割裂,新同学上手慢
我做这个项目的目标很明确:把"权限 + K8s + 告警 + 日志+服务器 + 告警记录 + 项目纳管等多项内容"打通成一条完整链路,把日常排障动作尽量收敛到一个平台中。
二、项目简介(Yunshu)
Yunshu 是一个基于 Go + React 的 Kubernetes 运维与项目化告警平台,核心模块包括:
- 系统管理:用户、角色、菜单、组织架构、字典、审计
- 权限体系:Casbin + K8s 三元策略(cluster + namespace + action)
- 项目管理:项目、成员、服务器、服务、日志源、Agent
- 告警平台:数据源、规则、值班、静默、通知渠道、告警记录
- K8s 管理:工作负载、网络、存储、RBAC、CRD/CR、事件
三、技术栈选型
后端:
- Go(Gin)
- GORM(MySQL)
- Casbin(权限控制)
- Redis
前端:
- React + TypeScript
- Ant Design
- Vite
四、快速启动
bash
git clone https://github.com/chinesewxd123/yunshu.git
cd yunshu
go mod download
cd web && npm install && cd ..
go run . migrate
go run . seed
go run . server
前端:
bash
cd web
npm run dev
五、核心功能截图(按业务链路)
1)登录与总览



- 支持账密登录与邮箱验证码登录
- 登录后菜单按权限动态加载
- 概览页集中展示核心指标
2)系统管理与权限治理













- 用户、角色、授权规则统一维护
- Casbin 规则与接口权限结合
- 登录日志 + 操作日志形成审计闭环
3)项目管理与日志平台






- 项目维度管理服务器、服务、日志源与 Agent
- 日志平台支持实时查看与过滤
- 更适合多人协同排障
4)告警平台(规则到通知闭环)








- 支持项目级数据源与规则管理
- 值班、静默、通知渠道可组合编排
- 触发与恢复消息均可追踪
5)Kubernetes 可视化管理


























- 工作负载、网络、存储、RBAC、CRD/事件一站式管理
- Pod 详情页只读,编辑统一走表单入口,减少误操作
- 三元策略强化 K8s 细粒度授权
六、数据库与排障:我怎么让链路"可追踪"?
数据库:permission_system
我在文档中把 ER 图拆成了总览 + 5 张子图,并且每张子图都加了"查询入口 SQL 示例",用于排障和 onboarding:
docs/handbook/database/er-diagrams.md
推荐排障顺序:
- 按项目定位主资源链路(成员/服务器/数据源)
- 告警问题走"数据源 -> 规则 -> 值班 -> 事件"
- 权限问题走"用户 -> 角色 -> 授权规则 -> 操作日志"
- K8s 问题走"集群状态 -> 三元策略 -> 资源操作记录"
七、几个实践经验(踩坑总结)
- 详情页与编辑页不要混用:详情建议只读,编辑统一入口
- 权限语义要尽量统一:项目内角色和全局权限容易冲突,建议收敛
- 告警系统必须可追踪:规则、值班、通知记录缺一不可
- 文档要和页面同步迭代:截图 + 结构化说明对团队协作很关键
八、后续规划
- 权限与策略冲突分析器
- 告警消息模板可视化配置
- 日志查询增强(收藏、回放、聚合分析)
- 多云与多集群场景继续扩展
九、结语
如果你正在做内部平台建设,我建议优先把"权限、K8s、告警、日志"打通,再去做模块细节深挖。
平台化的价值,不是页面多,而是让排障路径更短、协作边界更清晰、团队上手更快。
欢迎评论区交流你的实践方案。