Files
aiops/ROADMAP.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

3.4 KiB
Raw Blame History

K8s 管理功能演进路线图

每个模块 = 1 个 cron 周期(6h)可完成的中等粒度功能。完成后更新状态。

当前冲刺:P0 — Metrics 数据贯通

M1: SyncCluster 增加 metrics 采集 [done]

目标: 同步时采集 node/pod metrics,写入 DB 的 cpu_usage/memory_usage 字段

后端改动:

  • SyncCluster handler 中,client.ListNodes() 之后调 client.GetNodeMetrics()
  • 将 CPU(nanocores→m) / Memory(Ki→Mi) 换算后写入 kubernetes_nodes.cpu_usage / memory_usage(百分比)
  • 同理调 client.GetPodMetrics() 写入 Pod 的资源使用

前端改动:

  • KubernetesClusterDetail.tsx: 删除 resourceData 硬编码,改为从 API 获取真实数据(或展示当前 metrics 快照)
  • 资源分布卡片读取 cluster 实际计数(node_count/pod_count 已有)

验收标准:

  • SyncCluster 后 DB kubernetes_nodes 表 cpu_usage/memory_usage 非零
  • 节点列表页 CPU/内存百分比非零
  • 集群详情页无硬编码 mock 数据
  • curl /kubernetes-clusters/:id 返回的 node_count/pod_count 正确

M2: Pod Metrics 详情页接入 [done]

目标: Deployment 详情页和 Pod 列表展示真实 CPU/内存使用

改动:

  • 后端 ListPods handler 注入 GetPodMetrics()(类似 ListNodes 已有逻辑)
  • 前端 Pod 列表表格增加 CPU/内存列
  • DeploymentView 容器详情区域读取 metrics

验收标准:

  • Pod 列表有 CPU/内存使用量列
  • Deployment 详情页容器 CPU/内存非 mock

M3: Pod 文件上传 [done]

目标: PodFileBrowser 增加上传能力

改动:

  • 后端新增 POST .../pods/:pod/files/upload — multipart 表单接收,base64 分块 exec 写入
  • 前端 PodFileBrowser 增加上传按钮 + FormData 上传
  • 重大修复: ExecInPod 从 raw HTTP SPDY(不工作)改为 WebSocket channel.k8s.io 协议(和 ExecTerminal 一致)
  • 修复: BusyBox ls 不支持 --time-style,解析器改为兼容 BusyBox 默认日期格式

验收标准:

  • 可上传文件到 Pod 容器内
  • 上传后文件列表刷新可见
  • verify 字段返回正确文件大小

M4: ConfigMap/Secret 编辑 [pending]

目标: 目前只读,增加在线编辑能力

改动:

  • 复用已有 UpdateResourceYAMLNS 端点
  • 前端 ConfigMap/Secret 列表增加编辑弹窗(YAML 编辑器)

验收标准:

  • 可在线编辑 ConfigMap 并保存
  • 保存后 K8s 中实际生效

M5: Deployment 暂停更新 + CI/CD 集成 [pending]

目标: 接通顶部菜单的暂停更新和 CI/CD 按钮

改动:

  • 后端 POST .../deployments/:name/pause 和 /resume
  • CI/CD 按钮跳转到已有 Pipeline 页面(传递 namespace+deployment 上下文)

验收标准:

  • 可暂停/恢复 Deployment 滚动更新
  • CI/CD 按钮可跳转到流水线页面

后续规划(P2+)

模块 描述
M6 Node 详情页(PID/容器运行时/分配率)
M7 Service/Ingress 在线编辑
M8 StatefulSet/DaemonSet 详情页(对标 Deployment)
M9 事件聚合 + 告警联动
M10 多集群资源对比看板

状态标记规则

pending → in_progress → done / blocked

每个模块完成后:

  1. 更新本文件状态
  2. 更新 PROJECT_EVALUATION.md 对应行
  3. git commit message 格式: feat(k8s): M1 SyncCluster metrics 采集