Files
aiops/ROADMAP.md
T
attacker 8637036995 feat(k8s): M4 ConfigMap/Secret 在线编辑
- YamlViewer 增加 autoEdit prop,打开即进入编辑模式
- NamespaceResourcePage ConfigMap/Secret 行增加编辑按钮(铅笔图标)
- 统一 cleanBeforeEdit=true,编辑前自动清理 status/managedFields/uid
- 端到端验证: GET YAML → PUT 更新 → curl 确认 K8s label 生效
- 更新 ROADMAP/PROJECT_EVALUATION
2026-06-23 02:33:31 +08:00

108 lines
3.7 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 管理功能演进路线图
> 每个模块 = 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 已有)
**验收标准**:
- [x] SyncCluster 后 DB `kubernetes_nodes` 表 cpu_usage/memory_usage 非零
- [x] 节点列表页 CPU/内存百分比非零
- [x] 集群详情页无硬编码 mock 数据
- [x] curl `/kubernetes-clusters/:id` 返回的 node_count/pod_count 正确
---
### M2: Pod Metrics 详情页接入 [done]
**目标**: Deployment 详情页和 Pod 列表展示真实 CPU/内存使用
**改动**:
- 后端 `ListPods` handler 注入 `GetPodMetrics()`(类似 ListNodes 已有逻辑)
- 前端 Pod 列表表格增加 CPU/内存列
- DeploymentView 容器详情区域读取 metrics
**验收标准**:
- [x] Pod 列表有 CPU/内存使用量列
- [x] 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 默认日期格式
**验收标准**:
- [x] 可上传文件到 Pod 容器内
- [x] 上传后文件列表刷新可见
- [x] verify 字段返回正确文件大小
---
### M4: ConfigMap/Secret 编辑 [done]
**目标**: 目前只读,增加在线编辑能力
**改动**:
- 后端 `UpdateResourceYAMLNS` 端点已支持 configmaps/secrets(无需改动)
- 前端 `YamlViewer` 增加 `autoEdit` prop — 打开即进入编辑模式
- `NamespaceResourcePage` ConfigMap/Secret 行增加显式编辑按钮(铅笔图标)
- 统一 `cleanBeforeEdit=true` — 编辑前自动清理 status/managedFields/uid 等只读字段
- `k8s-yaml-utils.ts` 的 `cleanYAML()` 提供行级清理
**验收标准**:
- [x] 可在线编辑 ConfigMap 并保存
- [x] 保存后 K8s 中实际生效(curl 验证 label 增删 → GET 确认)
---
### 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 采集`