Files
aiops/PROJECT_EVALUATION.md
T
attacker 9ab7572b8e feat(k8s): M3 Pod文件上传 + ExecInPod WebSocket协议重写
M3: Pod 文件上传
- 后端: POST .../pods/:pod/files/upload (multipart, base64分块exec写入)
- 前端: PodFileBrowser 增加上传按钮 + FormData API
- 路由: 新增 Kuboard (:clusterCode) + 旧 (:id) 两套路由

重大修复: ExecInPod 从 raw HTTP SPDY 改为 WebSocket channel.k8s.io
- 旧方案: HTTP POST + SPDY upgrade → 无法解析响应(协议头缺失 + 帧解析复杂)
- 新方案: gorilla/websocket Dialer + channel.k8s.io 子协议 → 和 ExecTerminal 一致
- 影响: 文件浏览/下载/上传全部恢复正常

修复: BusyBox ls 解析
- BusyBox 不支持 --time-style 参数,默认输出 Mon DD HH:MM 格式
- 解析器改为自动检测 GNU vs BusyBox 日期格式
2026-06-23 02:21:29 +08:00

54 lines
2.4 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 列表 | ✅ | ✅ | ✅ |
| Events 列表 | ✅ ListEvents | ✅ EventsPage | ✅ |
| 容量分析 | ✅ GetCapacityAnalysis | ✅ CapacityPage | ✅ |
| kubectl 终端 | ✅ KubectlShell(WS) | ✅ KubectlTerminal | ✅ |
| 拓扑图 | ✅ topology get/save | ✅ TopologyView | ✅ |
### ❌ 缺失(10%)
| 功能 | 优先级 | 说明 |
|------|:------:|------|
| Pod 文件上传 | ✅ | P2 | ✅ 已完成 M3 |
| CI/CD 集成菜单项 | P3 | 菜单有按钮但未接线 |
| Deployment 暂停更新 | P3 | 菜单无此项 |
### ⚠️ 已知架构约束
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)→ 前端不同页面读不同路径