3. 蓝图架构总览:蓝图组件、升级流程抽象与架构设计原则
本章是整门课程的架构基石。我们将从蓝图(Blueprint)的三大组件群——控制面、数据面与租户代理——出发,抽象出集群升级的标准流程,并提炼出支撑租户隔离的核心设计原则。理解这一层总览,后续章节的测试验证才能有的放矢。
3.1 蓝图组件:控制面 / 数据面 / 租户代理
蓝图架构将升级能力拆解为三个职责清晰的组件群,形成“中心管控、边缘执行、租户自治”的三角模型。
| 组件群 | 核心职责 | 关键子组件 | 隔离边界 |
|---|---|---|---|
| 控制面 | 全局编排、策略下发、状态聚合 | 升级调度器、版本仓库、租户策略引擎 | 集群级全局共享 |
| 数据面 | 实际负载迁移、版本切换、流量管理 | Sidecar 代理、网关控制器、数据迁移管道 | 节点级 / 命名空间级 |
| 租户代理 | 租户配置注入、升级窗口协商、健康自检 | 租户适配器、本地状态缓存、回滚触发器 | 租户级完全隔离 |
架构要点:控制面不直接操作租户资源;所有租户级变更必须通过租户代理发起。这一约束是隔离安全的第一道防线。
3.2 升级流程抽象
一次完整的集群升级被抽象为五个阶段,每个阶段都有明确的隔离检查点。
- 准备阶段(Prepare):控制面拉取目标版本元数据,租户代理上报当前租户状态与升级窗口偏好。
- 策略协商阶段(Negotiate):控制面根据全局策略与租户窗口,生成每个租户的升级计划(时间窗口、并发度、回滚阈值)。
- 数据面迁移阶段(Migrate):数据面按计划执行负载迁移,租户代理实时监控迁移进度并上报健康指标。
- 版本切换阶段(Switch):控制面下发版本切换指令,数据面原子切换流量入口,租户代理执行本地缓存刷新。
- 验证与回滚阶段(Verify/Rollback):租户代理发起端到端健康自检,若失败则触发租户级回滚,不影响其他租户。
关键抽象:升级流程被设计为“控制面驱动 → 数据面执行 → 租户代理确认”的三步握手模式。任何阶段缺少租户代理的确认信号,流程自动暂停。
3.3 架构设计原则
蓝图架构遵循四条核心设计原则,它们直接指导测试验证的用例设计。
- 原则一:租户边界不可穿透 —— 控制面不能直接修改租户资源,所有变更必须通过租户代理的 API 网关。测试时必须验证控制面是否尝试绕过代理。
- 原则二:升级操作可回滚 —— 每个升级阶段都支持租户级原子回滚,回滚操作不依赖控制面在线状态。测试需覆盖控制面离线时的回滚场景。
- 原则三:状态最终一致 —— 控制面与租户代理之间通过异步事件总线同步状态,允许短暂不一致,但必须在超时窗口内收敛。测试需注入网络延迟验证收敛逻辑。
- 原则四:最小特权执行 —— 数据面组件仅拥有操作当前升级租户资源的临时权限,升级完成后权限自动回收。测试需验证权限泄露场景。
测试陷阱提醒:原则一和原则四是最容易被忽略的测试盲区。许多团队只验证功能流程,未验证控制面是否意外获得了租户资源的直接访问路径。建议在测试环境中部署网络策略审计工具,实时捕获跨边界访问。
3.4 架构总览与测试验证的映射
将组件、流程与原则映射到测试维度,形成可执行的验证矩阵。
| 架构要素 | 测试维度 | 典型验证场景 | 预期隔离效果 |
|---|---|---|---|
| 控制面 → 租户代理 | 接口隔离 | 控制面直接调用租户 Pod API | 请求被租户代理网关拒绝 |
| 数据面迁移 | 负载隔离 | 租户 A 升级时,租户 B 的流量是否被误切 | 零误切 |
| 租户代理自检 | 故障隔离 | 租户 A 代理宕机,是否影响租户 B 的升级流程 | 仅租户 A 升级暂停 |
| 回滚操作 | 依赖隔离 | 控制面离线时,租户代理能否独立完成回滚 | 回滚成功,不依赖控制面 |