Files
aiops/PROJECT_EVALUATION.md
T
attacker a8b4af4409 feat(k8s): M7 容器信息Tab — 完整容器编辑器(工作容器+初始化容器)
- 新增 DeploymentEditContainers.tsx (~700行): Kuboard 风格容器编辑器
  - 工作容器 + 初始化容器分组管理(增/删/复制)
  - 完整字段编辑: 镜像/拉取策略/命令/参数/工作目录
  - 环境变量/端口(TCP/UDP/SCTP)/资源requests-limits
  - 健康检查: liveness/readiness/startup三种探针
    httpGet/tcpSocket/exec 三种检测方式可切换
  - 生命周期回调: postStart/preStop (exec/httpGet/tcpSocket)
  - 安全上下文: runAsUser/runAsGroup/privileged/capabilities等
  - 卷挂载: name/mountPath/subPath/readOnly
  - Pod级镜像拉取凭证(imagePullSecrets)编辑
- DeploymentWorkload.tsx: 容器Tab从旧DeploymentEdit替换为DeploymentEditContainers
- 纯前端工程, 后端GetYAML/UpdateYAML已完善
- 验证: tsc零错误 + vite build成功 + SPA路由200 + YAML PUT保存200

Closes M7
2026-06-22 23:29:30 +00:00

82 lines
4.6 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 | ✅ EventsPage | ✅ |
| 容量分析 | ✅ GetCapacityAnalysis | ✅ CapacityPage | ✅ |
| kubectl 终端 | ✅ KubectlShell(WS) | ✅ KubectlTerminal | ✅ |
| 拓扑图 | ✅ topology get/save | ✅ TopologyView | ✅ |
### ❌ 缺失 / 进行中
| 功能 | 优先级 | 说明 |
|------|:------:|------|
| Pod 文件上传 | ✅ | P2 | ✅ 已完成 M3 |
| ConfigMap/Secret 编辑 | ✅ | P2 | ✅ 已完成 M4 |
| **Deployment 可视化编辑器** | **P1** | **M6-M7已完成(三模式+基本信息Tab+YAML编辑器+容器编辑器),M8-M9 进行中** |
| **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+ 字段编辑) |
| `YamlViewer.tsx` | 220 | ✅ 升级 M6 | CodeMirror 6 YAML 语法高亮+行号+折叠,弹窗+内联双模式 |
| `DeploymentDetail.tsx` | 719 | 💀 遗留 | **旧版 tab 式详情页,仅 KubernetesWorkloads.tsx 引用,待清理** |
| 后端 GetYAML/UpdateYAML | — | ✅ 完善 | 支持 12 种资源,PUT 直通 K8s API,**纯前端工程无需改后端** |
**编辑器 5 Tab 模块拆分**:
| Tab | 模块 | 预估代码量 | 核心字段 |
|-----|------|-----------|---------|
| 基本信息 | M6 | ~200 行 | name/namespace/labels/annotations/replicas |
| 容器信息 | M7 ✅ | ~700 行 | 镜像/资源/端口/环境变量/健康检查/生命周期/安全上下文/卷挂载/初始化容器 |
| 存储挂载 | 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)→ 前端不同页面读不同路径