Files
aiops/PROJECT_EVALUATION.md
T
attacker 8240a88a84 feat(k8s): M14 Namespace 管理看板(资源配额 + 命名空间 CRUD)
- 后端: ListNamespacesDetailed/CreateNamespace/DeleteNamespace/ListResourceQuotas/ListLimitRanges
- 后端: GetNamespacesDetail handler (6 API calls aggregate, not N×3)
- 后端: CreateNamespaceHandler + DeleteNamespaceHandler (system NS protection)
- 前端: NamespaceManagementPage.tsx (~280行) — 表格+概览卡片+创建/删除弹框
- 路由: GET/POST/DELETE /:clusterCode/namespaces + GET /namespace/:ns/detail
- 验证: 9/9 通过 (urllib), TS 零错误, Vite 构建成功
2026-06-24 23:46:52 +08:00

90 lines
5.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 + GetEventsSummary(M12) | ✅ EventsPage 聚合看板(M12) | ✅ |
| 容量分析 | ✅ GetCapacityAnalysis | ✅ CapacityPage | ✅ |
| kubectl 终端 | ✅ KubectlShell(WS) | ✅ KubectlTerminal | ✅ |
| 拓扑图 | ✅ topology get/save | ✅ TopologyView | ✅ |
| **Node 详情页** | ✅ GetNodeDetail (M10) | ✅ NodeDetailPage | ✅ curl 验证 |
| **StatefulSet/DaemonSet 详情页** | ✅ GetStatefulSetDetail/GetDaemonSetDetail + YAML路由修复 (M11) | ✅ WorkloadViewPage 重写 (M11) | ✅ curl 验证 |
| **多集群资源对比看板** | ✅ GetMultiClusterComparison (M13) | ✅ ClusterComparePage (M13) | ✅ urllib 验证 |
| **Namespace 管理看板** | ✅ GetNamespacesDetail + CRUD (M14) | ✅ NamespaceManagementPage (M14) | ✅ urllib 验证 |
### ❌ 缺失 / 进行中
| 功能 | 优先级 | 说明 |
|------|:------:|------|
| Pod 文件上传 | ✅ | P2 | ✅ 已完成 M3 |
| ConfigMap/Secret 编辑 | ✅ | P2 | ✅ 已完成 M4 |
| **Deployment 可视化编辑器** | ✅ | **P1** | **✅ 全部完成 M6-M9 — 三模式(view/edit/yaml) + 5 Tab 编辑器(基本信息/容器信息/存储挂载/高级设置/服务路由)** |
| **YAML 编辑器增强** | **P1** | **✅ 已完成 M6 — CodeMirror 6 语法高亮+行号+折叠+内联模式** |
| CI/CD 集成菜单项 | ✅ | P3 | ✅ 已完成 M5 — 跳转流水线页面 |
| Deployment 暂停更新 | ✅ | P3 | ✅ 已完成 M5 — pause/resume 端点 + 暂停 Badge |
### 📋 Deployment 编辑器现状评估 (2026-06-23)
| 组件 | 行数 | 状态 | 说明 |
|------|------|:----:|------|
| `DeploymentWorkload.tsx` | 680 | ✅ 可用 | Shell 框架(header + 三模式切换 + EditModeContainer Tab 系统) |
| `DeploymentView.tsx` | 395 | ✅ 完整 | 查看模式(状态卡片/容器模板/Pod实例/版本历史/RS) |
| `DeploymentEditBasic.tsx` | 340 | ✅ 完成 M6 | 基本信息 Tab — replicas/labels/annotations/selector 编辑 |
| `DeploymentEditContainers.tsx` | 700+ | ✅ 完成 M7 | 完整容器编辑器(工作容器+初始化容器,10+ 字段编辑) |
| `DeploymentEditStorage.tsx` | 437 | ✅ 完成 M8 | 存储挂载 Tab — 6种 volume 类型编辑 + volumeMounts 汇总 |
| `DeploymentEditAdvanced.tsx` | 632 | ✅ 完成 M8 | 高级设置 Tab — 更新策略/调度/容忍/DNS/主机别名/安全上下文 |
| `DeploymentEditService.tsx` | — | ✅ 完成 M9 | 服务/应用路由 Tab — selector 关联 Service + 创建/删除 |
| `YamlViewer.tsx` | 220 | ✅ 升级 M6 | CodeMirror 6 YAML 语法高亮+行号+折叠,弹窗+内联双模式 |
| `DeploymentDetail.tsx` | 719 | 💀 遗留 | **旧版 tab 式详情页,仅 KubernetesWorkloads.tsx 引用,待清理** |
| 后端 GetYAML/UpdateYAML | — | ✅ 完善 | 支持 12 种资源,PUT 直通 K8s API,**纯前端工程无需改后端** |
**编辑器 5 Tab 模块拆分**:
| Tab | 模块 | 预估代码量 | 核心字段 |
|-----|------|-----------|---------|
| 基本信息 | M6 ✅ | ~340 行 | name/namespace/labels/annotations/replicas |
| 容器信息 | M7 ✅ | ~700 行 | 镜像/资源/端口/环境变量/健康检查/生命周期/安全上下文/卷挂载/初始化容器 |
| 存储挂载 | M8 ✅ | ~437 行 | 6种数据卷(EmptyDir/HostPath/ConfigMap/Secret/PVC/NFS) + volumeMounts汇总 |
| 高级设置 | M8 ✅ | ~632 行 | 更新策略/调度/nodeSelector/tolerations/DNS/主机别名/SA/安全上下文/hostNetwork |
| 服务/应用路由 | M9 ✅ | — | Service(ClusterIP/NodePort/LB) selector关联 + Ingress |
| YAML 编辑器 | M6 ✅ | ~220 行 | CodeMirror 6 语法高亮+行号+折叠 |
| **合计** | **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)→ 前端不同页面读不同路径
5. **Node 详情页** (M10 ✅) — `GetNodeDetail` handler 返回完整节点信息:container_runtime/architecture/taints/conditions/资源分配率/Pod列表,前端 `NodeDetailPage.tsx` 可视化展示