后端: - SyncCluster 中调 GetNodeMetrics() 获取 metrics-server 数据 - 节点 INSERT 增加 cpu_usage/memory_usage 百分比字段 - 新增 parseCpuNanoToMilli / parseMemKiToMi 辅助函数 - 采集 Pod metrics(为 M2 准备) 前端: - KubernetesClusterDetail 删除硬编码 resourceData mock - 改为从节点 metrics 实时计算集群 CPU/内存使用率 - 图表 Y 轴固定 0-100 域,底部显示百分比数值 新增文档: - ROADMAP.md / TDD_PLAN.md / PROJECT_EVALUATION.md
86 lines
2.4 KiB
Markdown
86 lines
2.4 KiB
Markdown
# TDD 验证计划 — K8s 管理功能
|
|
|
|
> 每个模块实现前先写验证用例,实现后必须跑通,不能只编译通过。
|
|
|
|
## 通用验证流程
|
|
|
|
```bash
|
|
# 1. 重建后端镜像
|
|
cd /srv/aiops && docker-compose up -d --build backend
|
|
|
|
# 2. 等待 healthy
|
|
sleep 10 && docker ps --format '{{.Names}} {{.Status}}' | grep aiops-backend
|
|
|
|
# 3. 获取 JWT Token
|
|
TOKEN=$(curl -s http://127.0.0.1:8080/api/v1/auth/login \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"username":"admin","password":"CHANGE_ME"}' | jq -r '.data.token')
|
|
|
|
# 4. 验证 API
|
|
curl -s http://127.0.0.1:8080/api/v1/kubernetes-clusters \
|
|
-H "Authorization: Bearer $TOKEN" | jq '.'
|
|
```
|
|
|
|
---
|
|
|
|
## M1: SyncCluster metrics 采集
|
|
|
|
### 验证用例
|
|
|
|
```bash
|
|
# U1: 同步前 — 确认 DB 里 cpu_usage 为 0
|
|
docker exec aiops-mysql mysql -uroot -p"$MYSQL_ROOT_PASSWORD" aiops \
|
|
-e "SELECT name, cpu_usage, memory_usage FROM kubernetes_nodes WHERE cluster_id=1"
|
|
|
|
# U2: 触发同步
|
|
curl -X POST http://127.0.0.1:8080/api/v1/kubernetes-clusters/1/sync \
|
|
-H "Authorization: Bearer $TOKEN"
|
|
|
|
# U3: 同步后 — 确认 cpu_usage/memory_usage 非零
|
|
docker exec aiops-mysql mysql -uroot -p"$MYSQL_ROOT_PASSWORD" aiops \
|
|
-e "SELECT name, cpu_usage, memory_usage FROM kubernetes_nodes WHERE cluster_id=1"
|
|
# 期望: cpu_usage > 0 AND memory_usage > 0
|
|
|
|
# U4: 集群详情页 API — 无硬编码
|
|
curl -s http://127.0.0.1:8080/api/v1/kubernetes-clusters/1 \
|
|
-H "Authorization: Bearer $TOKEN" | jq '.data.node_count, .data.pod_count'
|
|
# 期望: node_count=2, pod_count>0
|
|
|
|
# U5: 前端构建无报错
|
|
cd /srv/aiops/frontend && npm run build 2>&1 | tail -5
|
|
# 期望: vite build 成功
|
|
```
|
|
|
|
### 通过标准
|
|
- [x] U1: 同步前 cpu_usage=0
|
|
- [x] U2: 同步 API 200
|
|
- [x] U3: 同步后 cpu_usage>0
|
|
- [x] U4: 集群计数正确
|
|
- [x] U5: 前端构建成功
|
|
|
|
---
|
|
|
|
## M2: Pod Metrics
|
|
|
|
### 验证用例
|
|
```bash
|
|
# 同步后 Pod 列表含 CPU/内存
|
|
curl -s "http://127.0.0.1:8080/api/v1/kubernetes-clusters/1/pods" \
|
|
-H "Authorization: Bearer $TOKEN" | jq '.data[0]'
|
|
# 期望: 含 cpu_usage_m / mem_usage_mi 字段
|
|
```
|
|
|
|
---
|
|
|
|
## M3: Pod 文件上传
|
|
|
|
### 验证用例
|
|
```bash
|
|
# 上传文件
|
|
echo "test content" > /tmp/test-upload.txt
|
|
curl -X POST "http://127.0.0.1:8080/api/v1/kubernetes/1/namespace/devops/pods/aiops-xxx/files/upload?path=/tmp&container=aiops" \
|
|
-H "Authorization: Bearer $TOKEN" \
|
|
-F "file=@/tmp/test-upload.txt"
|
|
# 期望: 200 + 文件出现在列表中
|
|
```
|