# k8s_operation
**Repository Path**: jay-kim/k8s_operation
## Basic Information
- **Project Name**: k8s_operation
- **Description**: k8s_operation — Kubernetes 后台管理与智能运维平台
k8s_operation 是一个基于 Go + Gin + GORM + Zap 开发的企业级 Kubernetes 后台管理系统,集成集群管理、可视化资源操作、告警系统、RBAC 认证、日志审计等能力,同时扩展了 自定义 Kubernetes Operator(AppConfig),支持应用级自动化运维。
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 41
- **Forks**: 12
- **Created**: 2025-08-15
- **Last Updated**: 2026-04-02
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 🚀 K8sOperation · 企业级 Kubernetes 多集群管理平台
一个对标 **Rancher/KubeSphere** 的企业级 K8s 管理平台,基于 **Go + Gin + GORM + Vue3 + client-go** 构建。
解决中大型企业 **多集群管理分散、权限隔离困难、运维效率低下** 的核心痛点。
------
## 🎯 平台定位与核心价值
| 痛点 | 解决方案 |
|------|----------|
| 多集群管理分散 | 统一控制台管理 N 个 K8s 集群(开发/测试/生产) |
| 权限隔离困难 | 三层 RBAC 模型(平台→集群→命名空间) |
| kubectl 门槛高 | 可视化操作,降低使用门槛 |
| 发布不可追溯 | CI/CD 流水线 + 审计日志 |
| 镜像管理混乱 | 多仓库接入 + 自动清理策略 |
**核心能力**:
- 🌐 **多集群资源治理** - 统一管理开发/测试/生产环境
- 🔐 **RBAC 精细化权限** - 细粒度权限隔离,满足审计要求
- 🔄 **CI/CD 发布编排** - 集成 Jenkins,支持审批/回滚
- 📦 **镜像仓库管理** - 支持 Harbor/ACR/Docker Registry
- ⚙ **平台运维监控** - 健康检查、审计日志、系统配置
------
## 🏗 技术架构
```
┌─────────────────────────────────────────────────────────────────────┐
│ 前端层 (Vue3 + Vite + Pinia) │
│ 企业级 UI · 动态权限菜单 · 路由守卫 · v-permission 指令 │
└─────────────────────────────────────────────────────────────────────┘
│ RESTful API + JWT
┌─────────────────────────────────────────────────────────────────────┐
│ 后端层 (Go + Gin + GORM) │
│ JWT 认证 · RBAC 鉴权 · 统一错误码 · Zap 日志 · 优雅关闭 │
└─────────────────────────────────────────────────────────────────────┘
│ │ │
┌─────┴─────┐ ┌─────┴─────┐ ┌─────┴─────┐
│ MySQL │ │ Redis │ │ K8s API │
│ 持久化 │ │ 会话/缓存 │ │ 多集群 │
│ 审计日志 │ │ Token管理 │ │ client-go │
└───────────┘ └───────────┘ └───────────┘
```
### 技术选型说明
| 层面 | 技术 | 选型理由 |
|------|------|----------|
| 后端框架 | Go + Gin | 高并发、云原生标准语言、性能优异 |
| ORM | GORM | 功能完善、支持多数据库、开发效率高 |
| 前端框架 | Vue3 + Vite | 响应式、Composition API、热更新快 |
| 状态管理 | Pinia | 轻量、TypeScript 友好 |
| 认证方案 | JWT + Redis | 无状态、可横向扩展、支持主动失效 |
| K8s 客户端 | client-go | 官方 SDK、功能完整、版本兼容好 |
| 日志系统 | Zap | 高性能、结构化日志 |
------
## 🔐 三层 RBAC 权限架构(核心亮点)
```
┌─────────────────────────────────────────────────────────────┐
│ 平台角色 (Platform Role) │
│ super_admin · platform_admin · developer │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ 集群权限 (Cluster Permission) │
│ 用户可以管理哪些 K8s 集群 │
│ cluster_admin · cluster_viewer · none │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ 命名空间权限 (Namespace Permission) │
│ 用户在集群内可以操作哪些 namespace │
│ 精确到 CRUD 粒度 │
└─────────────────────────────────────────────────────────────┘
```
### 权限实现机制
**后端**:
- 每个 API 请求携带 `x-cluster-id` 头部
- 中间件校验用户对目标集群的权限
- K8s 操作使用 SubjectAccessReview 二次校验
**前端**:
- 登录时获取完整权限树,缓存到 Pinia Store
- 动态菜单:根据角色显示/隐藏菜单项
- 路由守卫:无权限页面自动拦截跳转
- `v-permission` 指令:按钮级权限控制
```vue
```
------
## 🔗 项目地址
- Gitee(主仓库):https://gitee.com/jay-kim/k8s_operation
- GitHub(镜像仓库):https://github.com/jay-codemine/k8s_operation
> 📦 **配套 AppConfig Operator(Kubebuilder 项目)请访问:**
> 👉 https://gitee.com/jay-kim/appconfig-operator
系统支持多集群管理、事件聚合、滚动升级、镜像更新、扩缩容、Pod 日志流、节点驱逐/隔离、PVC 扩容等能力。
------
## 📦 Kubernetes / client-go 版本兼容性
本项目基于:
- `k8s.io/client-go v0.34.2`
根据官方版本映射规则:
- client-go v0.34.x 对应 Kubernetes v1.34.x
由于 Kubernetes 对客户端有向后兼容策略,旧版本 Kubernetes 也可以正常访问绝大多数 API:
- ✅ 推荐:Kubernetes v1.34.x
- 👍 支持:Kubernetes v1.28.x ~ v1.33.x(大多数功能均正常)
- ⚠ 低于 v1.25 可能存在部分 API 不支持或弃用问题
> 建议生产环境尽量使用与 client-go 主版本号一致的 Kubernetes 版本,以获得最佳兼容性。
## 🖥️ 系统界面展示
> 以下为真实系统运行截图
---
### 🔹 核心界面预览
---
📂 点击展开查看全部界面截图
## ✨ 核心特性
### 🚦 CI/CD 发布控制(人工审批 / 回滚 / 审计)
平台内置“发布控制平面”,将 CI/CD 从脚本编排升级为 **可控、可追踪、可回滚** 的发布体系。
### 发布流程(建议生产启用)
1. 创建发布单(Release)
2. 触发构建(CI):Jenkins/GitHub Actions 等(平台与 CI 解耦)
3. 进入待审批(PENDING_APPROVAL)
4. 人工审批通过(APPROVED)后进入部署(DEPLOYING)
5. 滚动更新(RollingUpdate)并持续采集状态
6. 发布成功(SUCCEEDED)或失败(FAILED)
7. 支持一键回滚(ROLLBACKING -> ROLLED_BACK)
### 能力说明
- ✅ 人工审批:审批人/审批时间/审批意见记录,可做权限控制与审计
- ✅ 发布状态机:状态迁移可控,避免“脚本式发布不可追踪”
- ✅ 发布日志:记录构建/部署/回滚全过程关键事件
- ✅ 回滚能力:
- Deployment:基于 ReplicaSet 历史版本回滚(或指定历史版本)
- StatefulSet/DaemonSet:基于 ControllerRevision 回滚(按实现情况说明)
- ✅ 发布过程可观测:滚动更新进度、Pod 状态、事件聚合(Backoff、PullError 等)
### 🧩 系统通用能力
- 配置化加载(YAML / ENV)
- JWT 鉴权 + 刷新机制
- Zap 双日志系统(系统日志 / 业务日志)
- Swagger 在线 API 文档(支持 Standalone)
- 健康检查与优雅关闭
- 标准化控制器 / 服务 / DAO 分层
- 全局异常拦截(中间件)
------
## ☸ Kubernetes 高级能力(全部已实现)
### Deployment 管理
- CRUD、扩缩容、镜像更新、滚动升级
- 滚动重启、基于 ReplicaSet 的版本回滚
- Pods 列表、事件聚合、历史版本查询
### Pod 管理
- 列表、详情、日志(流式/非流)
- 镜像 Patch、事件查询、强制删除
### StatefulSet / DaemonSet
- CRUD、扩缩容、镜像更新
- ControllerRevision 回滚
### Service / Ingress
- CRUD
- Strategic / JSON Merge Patch
- TLS 配置、事件聚合
### Job / CronJob
- Job:创建 / 删除 / 状态查询
- CronJob:启停、删除、历史 Job 查询
### Secret / PVC / PV / ConfigMap / StorageClass
- 全生命周期管理
- PVC 扩容、PV ReclaimPolicy 修改
- ConfigMap Patch、StorageClass CRUD
### Node 高级管理
- Cordon / Uncordon
- Drain(驱逐可驱逐 Pod)
- Pod Evict(支持 gracePeriod)
- 节点 Metrics、Pods 列表
### Event 事件聚合
- Pod / Deploy / StatefulSet / Node 等资源
- 支持排障快速定位(Backoff、PullError、Unschedulable)
------
## 🧩 多集群管理
- 动态添加/切换多个 K8s 集群
- **kubeconfig 加密存储**(AES-256-GCM)
- TLS 证书动态信任(解决 x509 证书问题)
- 连通性检测与健康状态监控
- 多集群 clientset 连接池管理
适合企业多集群统一管控场景。
------
## 💡 技术亮点
### 1. 敏感数据加密存储
```go
// kubeconfig 使用 AES-256-GCM 加密
// 数据库存储格式:ENC:base64(nonce+ciphertext)
func EncryptKubeConfig(plain, key string) string {
// AEAD 加密,防篡改,安全性高
}
```
### 2. 统一错误码体系
```go
// 前端可根据错误码精准处理不同场景
var (
InvalidParams = NewError(10001, "参数错误")
Unauthorized = NewError(10002, "认证失败")
ClusterNotFound = NewError(20001, "集群不存在")
PermissionDenied = NewError(20002, "权限不足")
)
```
### 3. K8s 客户端连接池
```go
// 多集群场景,每个集群维护独立 clientset
// 支持动态切换,避免重复创建连接
type ClusterClientManager struct {
clients sync.Map // clusterId -> *kubernetes.Clientset
}
```
### 4. 配置热更新
```
系统设置存储在数据库,修改后立即生效
├── 基础设置(默认页面、语言、时区)
├── 安全设置(会话超时、密码策略)
├── 告警设置(CPU/内存/磁盘阈值)
└── 通知设置(邮件/钉钉/Webhook)
```
------
## 💡 项目难点与解决方案
| 难点 | 解决方案 |
|------|----------|
| 多集群 TLS 证书信任 | 解析 kubeconfig 中的 CA,动态构建 TLS Config |
| 权限隔离粒度细 | 三层模型 + 前后端双重校验 |
| 配置热更新 | 数据库存储 + 内存缓存,修改后立即生效 |
| 空集群启动 | 降级策略,无集群时跳过 K8s 初始化 |
| 错误码统一 | 全局错误码体系 + 中间件统一处理 |
| 前后端类型一致性 | DAO 层强制返回空切片而非 nil |
------
------
## 📈 项目收益
通过这个平台,运维团队可以:
- **效率提升**:多集群统一管理,减少 80% 切换成本
- **安全合规**:细粒度权限隔离,满足审计要求
- **降低门槛**:开发人员无需学习 kubectl,可视化操作
------
## 📦 项目结构(真实仓库对应)
```bash
k8soperation/
├── cmd/
├── configs/
├── docs/
│ ├── 📄 K8sOperation 后台系统部署文档.md <--(部署文档)
├── global/
├── initialize/
├── internal/
│ ├── app/
│ ├── errorcode/
│ ├── health/
│ └── k8soperation/
├── pkg/
├── build/
└── storage/
```
------
## ⚙️ 快速启动
### 1️⃣ 克隆仓库
```bash
git clone https://gitee.com/jay-kim/k8s_operation.git
cd k8s_operation
```
### 2️⃣ 数据库初始化
```bash
# 数据库要求:MySQL 8.0+,字符集 utf8mb4
mysql -h 127.0.0.1 -u root -p < docs/sql/k8s-platform.sql
```
### 3️⃣ 启动后端
```bash
make build
./bin/k8soperation
```
### 4️⃣ 启动前端
```bash
cd k8s-web
npm install
npm run dev
```
### 5️⃣ 访问系统
- 前端界面:`http://localhost:5173`
- Swagger API:`http://localhost:8080/swagger`
- 默认账号:`admin / admin123`
------
## 📄 部署文档(强烈推荐阅读)
官方部署说明文档(包括 **后端服务** 与 **前端管理界面** 的部署方式):
👉 **K8sOperation 后台系统部署文档(后端)**
https://gitee.com/jay-kim/k8s_operation/blob/master/docs/📄%20K8sOperation%20后台系统部署文档.md
👉 **前端管理系统部署文档(k8s-web)**
https://gitee.com/jay-kim/k8s_operation/blob/master/docs/%E5%89%8D%E7%AB%AF%E7%AE%A1%E7%90%86%E7%B3%BB%E7%BB%9F%E9%83%A8%E7%BD%B2%E6%96%87%E6%A1%A3.md
---
### 后端部署文档内容包括:
- 构建后端二进制
- Docker / Containerd 镜像构建
- 使用 Systemd 管理服务
- Kubernetes Deployment / Service 部署示例
- 参数说明与优化建议
- 生产环境目录规划
---
### 前端部署文档内容包括:
- 前端项目构建(Vite)
- 环境变量配置(API_BASE)
- Nginx 部署(SPA 路由支持)
- Docker 部署
- Kubernetes(Deployment / Service / Ingress)
- 与后端 API 对接说明
## 🔗 关联项目(推荐配套使用)
### 📘 AppConfig Operator
(Kubebuilder 开发,用于管理自定义资源 AppConfig)
👉 https://gitee.com/jay-kim/appconfig-operator
Operator → 管理 AppConfig CRD
k8soperation → 提供 HTTP API/Web 后台
两者解耦,便于独立演进。
------
## ⭐ Star / Watch / Fork
如果本项目对你有帮助,非常欢迎:
- ⭐ **Star**
- 👀 **Watch**
- 🍴 **Fork**
你的支持是我持续完善的最大动力!
------
## 📜 License
Apache-2.0