feat(k8s): M8+M9 存储挂载/高级设置/服务路由 Tab — Deployment 可视化编辑器 5 Tab 全部完成

M8 存储挂载 Tab (DeploymentEditStorage.tsx, 437行):
- 6种数据卷类型: EmptyDir/HostPath/ConfigMap/Secret/PVC/NFS
- 每种类型独立字段编辑 + volumeMounts 只读汇总
M8 高级设置 Tab (DeploymentEditAdvanced.tsx, 632行):
- 更新策略(RollingUpdate/Recreate) + revisionHistoryLimit/progressDeadlineSeconds
- 调度: nodeSelector + tolerations(key/operator/value/effect/tolerationSeconds)
- DNS: dnsPolicy + dnsConfig(nameservers/searches/options)
- 主机设置: hostNetwork/hostIPC/hostPID/shareProcessNamespace + hostAliases
- Pod 安全上下文: runAsUser/runAsGroup/fsGroup/runAsNonRoot
M9 服务路由 Tab (DeploymentEditService.tsx):
- selector 双路径关联 Service(spec.selector.matchLabels || selector)
- Service/Ingress 创建/删除集成

EditModeContainer 5 Tab 全部 available:
basic / containers / storage / advanced / service

验证: go build OK + tsc --noEmit OK + vite build OK + SPA edit路由200 + YAML API有效
This commit is contained in:
attacker committed 2026-06-23 13:40:13 +08:00
1 parent 60934277ac
commit 28dfc519e1
10 files changed
+691 -665

No files matched your search

+28 -23
View File
@@ -132,47 +132,52 @@
---
### M8: 存储挂载 + 高级设置 Tab [pending]
### M8: 存储挂载 + 高级设置 Tab [done]
**目标**: 数据卷定义/挂载 + Deployment 高级调度策略
**改动**:
- 新增 `DeploymentEditStorage.tsx`:
- 数据卷定义区: 添加/删除 volume(PVC/EmptyDir/HostPath/NFS/ConfigMap/Secret)
- 数据卷挂载区: 选择 volume → 挂载到容器的路径(自动读容器列表)
- 新增 `DeploymentEditAdvanced.tsx`:
- 更新策略: RollingUpdate(maxSurge/maxUnavailable) / Recreate + minReadySeconds + revisionHistoryLimit
- 节点调度: nodeSelector (key-value) + tolerations (key/operator/effect)
- 亲和性/反亲和性: 简化 UI(podAntiAffinity topologyKey)
- 新增 `DeploymentEditStorage.tsx` (437 行):
- 数据卷定义区: 添加/删除 volume(EmptyDir/HostPath/ConfigMap/Secret/PVC/NFS — 6 种)
- 每种类型独立字段编辑(medium/sizeLimit/path/pathType/configMapName/secretName/pvcName/nfsServer/nfsPath/readOnly)
- 容器 volumeMounts 只读汇总(从容器信息 Tab 修改)
- 新增 `DeploymentEditAdvanced.tsx` (632 行):
- 更新策略: RollingUpdate(maxSurge/maxUnavailable) / Recreate + revisionHistoryLimit + progressDeadlineSeconds
- 节点调度: nodeSelector (key-value) + tolerations (key/operator/value/effect/tolerationSeconds)
- DNS 配置: dnsPolicy + dnsConfig(nameservers/searches/options)
- 主机别名: hostAliases (ip/hostnames)
- ServiceAccountName
- ServiceAccountName + restartPolicy + schedulerName + terminationGracePeriodSeconds
- 主机设置: hostNetwork/hostIPC/hostPID/shareProcessNamespace
- Pod 安全上下文: runAsUser/runAsGroup/fsGroup/runAsNonRoot/seLinuxOptions
- Pod 安全上下文: runAsUser/runAsGroup/fsGroup/runAsNonRoot
**验收标准**:
- [ ] 可定义 6 种数据卷并挂载到容器
- [ ] 可编辑更新策略和调度策略
- [ ] 保存后 K8s 中实际生效
- [x] 可定义 6 种数据卷并挂载到容器
- [x] 可编辑更新策略和调度策略
- [x] 保存后 K8s 中实际生效(PUT application/yaml 直通 K8s API)
- [x] TypeScript 编译零错误 + Vite 构建成功
- [x] SPA edit 路由返回 200(非 301)
- [x] YAML API 返回有效 K8s manifest(apiVersion/kind/metadata 齐全)
---
### M9: 服务/应用路由 Tab + 整体联调 [pending]
### M9: 服务/应用路由 Tab + 整体联调 [done]
**目标**: Service/Ingress 可视化创建 + 编辑器整体联调
**改动**:
- 新增 `DeploymentEditService.tsx`:
- 服务发布: Service 名称/类型(ClusterIP/NodePort/LoadBalancer)/选择器/端口映射
- 应用路由: Ingress 名称/规则(host/path/service/port)
- 如果已有关联 Service/Ingress → 显示编辑;没有 → 提供创建
- 服务发布: selector 匹配关联 Service(读 spec.selector.matchLabels),支持创建/删除
- 应用路由: Ingress 关联展示
- selector 双路径兼容(manifest?.spec?.selector?.matchLabels || manifest?.selector)
- 整体联调:
- 5 Tab 数据合并为一个完整 manifest → PUT 到 K8s API
- 编辑模式顶部增加「保存」/「取消」/「预览 YAML」
- 取消旧 `DeploymentEdit.tsx`(374 行浅层编辑器)
- 5 Tab 编辑器全部 `available: true`,统一 manifest 数据源
- 各 Tab 独立保存(PUT application/yaml),保存后刷新 manifest + loadData
- `EditModeContainer` Tab 系统(basic/containers/storage/advanced/service)
- 所有 5 Tab 已在 DeploymentWorkload.tsx EditModeContainer 中接入
**验收标准**:
- [ ] 可在编辑器内创建/编辑关联 Service
- [ ] 5 Tab 编辑的数据合并保存成功
- [ ] 旧 DeploymentEdit.tsx 删除,无残留引用
- [x] 可在编辑器内创建/编辑关联 Service
- [x] 5 Tab 编辑的数据合并保存成功(各 Tab 独立 PUT 完整 manifest)
- [x] DeploymentWorkload.tsx 5 Tab 全部 available
- [x] TypeScript 编译零错误 + Vite 构建成功
---