Files
aiops/PROJECT_EVALUATION.md
T
attacker 2e66908e20 feat(k8s): M5 Deployment 暂停更新 + CI/CD 集成
- 后端: PauseDeployment/ResumeDeployment 客户端方法 (PATCH spec.paused)
- 后端: ID路由 + Kuboard code路由 pause/resume handlers
- 后端: Deployment 列表 summary 增加 paused 字段
- 前端: 操作菜单增加「暂停更新/恢复更新」动态切换 + 暂停 Badge
- 前端: CI/CD 发布按钮跳转流水线页面 (namespace+deployment 上下文)
- 前端: api.ts 增加 pauseDeployment/resumeDeployment 方法
- 验证: 5项端到端测试全部通过 (Python urllib)
2026-06-23 03:06:13 +08:00

4.5 KiB
Raw Blame History

K8s 管理功能评估基线

生成时间: 2026-06-21 | 评估人: Logan + AI

总体规模

层 规模
后端 kubernetes.go 2583 行 / 99 个函数 / 74 个路由
后端 kubernetesclient/client.go 1486 行
前端组件 22 个 .tsx / 7498 行

功能评估

✅ 已完成(90%)

功能 后端 前端 验证状态
集群 CRUD + 同步 ✅ ✅ ✅ 已验证
集群表单(名称即 code) ✅ ✅ NAME_RE 正则 ✅
节点列表 + 实时 metrics ✅ ListNodes 调 GetNodeMetrics ✅ ClusterOverviewPage ⚠️ 实时OK,DB缓存缺
Pod 列表 ✅ ✅ ✅
Deployment 列表/详情 ✅ ✅ DeploymentView + DeploymentWorkload ✅
Deployment view/edit 路由 ✅ ✅ /:mode/:kind/:name ✅
Deployment 伸缩/重启/镜像更新 ✅ scale/restart/update-image ✅ ✅
Deployment 历史版本/回滚 ✅ revisions/rollback ✅ ✅
Pod 日志(实时流) ✅ GetPodLogs ✅ PodLogsViewer fetch stream ✅
Pod 终端 exec ✅ ExecTerminal(WS) ✅ PodExecTerminal bash/sh/ash ✅
Pod 文件浏览 + 下载 + 上传 ✅ files/list + files/download + files/upload ✅ PodFileBrowser ✅
YAML 查看/编辑 ✅ GetYAML + UpdateYAML ✅ YamlViewer ✅
ReplicaSet 列表 ✅ ✅ ✅
Service/Ingress 列表 ✅ ✅ ✅
HPA 列表/创建/删除 ✅ ✅ ✅
ConfigMap/Secret 列表 ✅ ✅ ✅
ConfigMap/Secret 编辑 ✅ UpdateResourceYAMLNS ✅ YamlViewer(autoEdit) ✅ curl 验证
Events 列表 ✅ ListEvents ✅ EventsPage ✅
容量分析 ✅ GetCapacityAnalysis ✅ CapacityPage ✅
kubectl 终端 ✅ KubectlShell(WS) ✅ KubectlTerminal ✅
拓扑图 ✅ topology get/save ✅ TopologyView ✅

❌ 缺失 / 进行中

功能 优先级 说明
Pod 文件上传 ✅ P2
ConfigMap/Secret 编辑 ✅ P2
Deployment 可视化编辑器 P1 M6-M9 进行中 — 当前编辑器只有 image/resources/probe(httpGet)/env/mounts,缺容器完整编辑/存储/调度/服务
YAML 编辑器增强 P1 M6 — 当前是纯 textarea,需 Monaco/CodeMirror 语法高亮
CI/CD 集成菜单项 ✅ P3
Deployment 暂停更新 ✅ P3

📋 Deployment 编辑器现状评估 (2026-06-23)

组件 行数 状态 说明
DeploymentWorkload.tsx 569 ✅ 可用 Shell 框架(header + 模式切换 + 操作下拉 + 模态框系统)
DeploymentView.tsx 395 ✅ 完整 查看模式(状态卡片/容器模板/Pod实例/版本历史/RS)
DeploymentEdit.tsx 374 ⚠️ 浅层 只覆盖 image/resources/probe(httpGet)/env/mounts,将在 M9 删除
YamlViewer.tsx 139 ⚠️ 基础 纯 textarea,无语法高亮/行号/校验,将在 M6 升级
DeploymentDetail.tsx 719 💀 遗留 旧版 tab 式详情页,仅 KubernetesWorkloads.tsx 引用,待清理
后端 GetYAML/UpdateYAML — ✅ 完善 支持 12 种资源,PUT 直通 K8s API,纯前端工程无需改后端

编辑器 5 Tab 模块拆分:

Tab 模块 预估代码量 核心字段
基本信息 M6 ~200 行 name/namespace/labels/annotations/replicas
容器信息 M7 ~800 行 镜像/资源/端口/环境变量/健康检查/生命周期/安全上下文/卷挂载
存储挂载 M8 ~500 行 6种数据卷(PVC/EmptyDir/HostPath/NFS/ConfigMap/Secret) + 挂载映射
高级设置 M8 ~600 行 更新策略/调度/容忍/亲和/DNS/主机别名/SA/安全上下文
服务/应用路由 M9 ~400 行 Service(ClusterIP/NodePort/LB) + Ingress 规则
YAML 编辑器 M6 ~200 行 Monaco Editor 集成
合计 M6-M9 ~2700 行 纯前端,零后端改动

⚠️ 已知架构约束

  1. K8s 集群(161/162)是 CentOS 7 — MySQL 8.0 容器跑不了(x86-64-v2),用 hostNetwork + 外部 MySQL
  2. metrics-server 已安装 — kubectl top nodes 正常返回
  3. 自研 K8s 客户端 — 不用 client-go,保持轻量 net/http 方案
  4. 两个数据路径:ListNodes 实时调 API(含 metrics),SyncCluster 写 DB(缺 metrics)→ 前端不同页面读不同路径