fix(platform-infra): split D601 from NC01 cluster

This commit is contained in:
pikastech
2026-07-20 09:50:06 +02:00
parent 4912abe5de
commit d3972699b0
10 changed files with 328 additions and 34 deletions
@@ -18,7 +18,7 @@
- Hyper-V 虚拟机、VHDX、处理器、内存和自动启动策略。
- 独立内部交换机、NAT、固定地址和出网连通性。
- Ubuntu cloud-init、SSH、Docker 和受控 k3s 运行角色初始化。
- 无固定公网地址 worker 通过原生 WireGuard 主动接入既有 k3s 控制面
- D601-VM 运行 YAML 声明的独立单节点 k3s 空集群
- provider-gateway 的节点身份、常驻恢复和 trans 验收。
- 后台安装的阶段、日志、错误和终态可见性。
@@ -57,8 +57,9 @@ Hyper-V 虚拟机必须配置为宿主启动后自动启动、宿主关机时保
- VM 为运行状态且资源与 YAML 一致。
- Ubuntu 固定地址可达并能正常出网。
- Docker daemon 和 k3s 节点健康。
- worker 以 agent 身份加入声明的控制面,且独立 server 不再运行
- 定向调度到 worker 的 smoke 能完成集群 DNS 与 ClusterIP 访问
- D601 只运行独立 k3s server,旧 agent 已停止
- 独立集群只有一个 Ready 节点,且非 `kube-system` Pod 为零
- NC01 集群内不存在 D601 Node。
- provider-gateway 以 YAML 声明的 Provider ID 在线。
- `trans <provider-id> hostname` 和 k3s route 均可用。
@@ -74,24 +75,27 @@ Provider TCP 数据池恢复必须满足:
- 修复范围只包含 Provider 服务,不得连带重启 VM、Docker 或 k3s。
- 同一入口必须在修复后重新执行 host 和 k3s route 验收。
### 3.8 HYPERV-VM-REQ-008 多主机 k3s 运行面
### 3.8 HYPERV-VM-REQ-008 独立 k3s 运行面
既有控制面与 Hyper-V worker 组成集群时必须满足
D601-VM 与 NC01 必须作为两个独立集群运行
- 控制面保持唯一 server,并继续承担 workload。
- Hyper-V 节点只能安装为 agent,不得保留独立 server
- 无固定公网地址的 worker 通过主动拨号的原生 WireGuard 三层隧道接入控制面。
- WireGuard 私钥和 k3s agent token 只能来自 YAML `sourceRef`,不得从运行面反解或打印
- k3s 节点地址、Flannel 接口、API TLS SAN、集群内 artifact registry 映射和 ServiceLB 节点选择必须由 owning YAML 渲染。
- worker 的业务调度资格、cordon 和 taint 必须由 owning YAML 声明并由
agent 注册参数与受控集群入口共同收敛。声明为不可调度的 worker 不得承载
非 DaemonSet 业务 PodCI/CD、GitOps 和 smoke 不得通过 toleration、
`nodeName` 或删除 taint 绕过该隔离
- worker 必须先受控部署 host proxy client 并连接 YAML 引用的 `vpn-server`,再启动 agentcontainerd 直接通过该 proxy 访问公共 registry,不得依赖公共镜像站或新增 registry mirror。
- `config/platform-infra/k3s-clusters.yaml` 必须显式声明
`topologyMode=separated` 和 D601 `k3s.standalone` 参数
- `config/platform-infra/hyperv-vms.yaml` 必须以
`management.mode=standalone` 引用独立集群配置
- D601 只运行单节点 k3s server;旧 `k3s-agent`、agent datastore、CNI
和跨地域 WireGuard peer 必须由受控拆分入口退役。
- 拆分前必须证明 D601 非 DaemonSet Pod 为零;D601 独立 server Ready
后,才能从 NC01 删除旧 Node 和 WireGuard peer。
- 拆分后 D601 非 `kube-system` Pod 必须为零,NC01 不得存在 D601 Node
- CI/CD、GitOps、VM bootstrap 和业务 renderer 禁止重新安装 agent、
恢复 agent token、重建跨地域 CNI 或把 NC01 workload 自动投递到 D601。
- D601 host proxy 可继续为独立集群提供公共依赖出网,不得依赖公共镜像站
或新增公共 registry mirror。
- 集群自有 artifact registry 可以通过公网可信 TLS 向异地 worker 提供鉴权只读拉取:
- 内部 CI/publish 继续使用集群内写入 endpoint,公网入口不得成为第二个 push authority。
- 公网边缘只允许 Registry V2 拉取所需的 `GET``HEAD`,其他方法必须在反向代理层拒绝。
- endpoint、DNS、上游、允许方法、凭据 `sourceRef`、镜像摘要和拉取验收参数必须来自集群 owning YAML。
- worker containerd 继续消费既有镜像引用,只把该内部引用映射到声明的公网 HTTPS endpoint。
- D601 containerd 继续消费既有镜像引用,只把该内部引用映射到声明的公网 HTTPS endpoint。
- artifact 大文件不得经过 WireGuard、Flannel/VXLAN 或受传输时长和对象大小限制的 CDN。
- 宿主内网 SSH 可以作为 worker 的稳定部署控制通道,provider route 只作为部署后验收入口。
- 宿主内网 SSH 可以作为 D601 的稳定部署控制通道,provider route 只作为部署后验收入口。