2. 基本概念:租户(Tenant)、蓝图(Blueprint)、控制平面(Control Plane)的定义与关系
在深入探讨控制平面接口的数据传输设计之前,必须首先厘清三个核心抽象概念:租户、蓝图与控制平面。这三者构成了云原生平台中资源隔离、配置分发与生命周期管理的基石。理解它们的定义与相互关系,是后续章节中分析接口语义、数据流与一致性模型的前提。
2.1 租户 (Tenant)
租户是平台中逻辑隔离的最小自治单元,代表一组共享同一资源配额、访问策略与配置边界的使用者或业务系统。在云原生架构中,租户可以是一个部门、一个项目组、一个外部客户,甚至是一个微服务集群。
| 维度 | 说明 |
|---|---|
| 身份边界 | 每个租户拥有独立的身份认证与授权体系(如 OIDC、RBAC)。 |
| 资源边界 | 租户之间通过命名空间(Namespace)、虚拟网络(VPC)、资源配额(ResourceQuota)实现硬隔离。 |
| 数据边界 | 租户的配置数据、运行时状态与审计日志在存储层进行逻辑或物理隔离。 |
| 生命周期 | 租户可独立创建、冻结、迁移或销毁,不影响其他租户。 |
关键认知: 租户隔离不是安全选项,而是多租户平台的强制性架构约束。控制平面接口在设计时必须将
tenant_id 作为每条数据请求的必选上下文参数。
2.2 蓝图 (Blueprint)
蓝图是描述目标部署状态的声明式配置模板。它定义了租户内一组资源(如工作负载、网络策略、存储卷、中间件实例)的期望规格、依赖关系与版本约束。蓝图是“期望状态”的载体,控制平面通过比对蓝图与实际运行状态来驱动数据同步与升级。
- 结构组成: 蓝图通常包含资源清单(Manifest)、参数化变量(Parameters)、依赖图(DAG)与版本元数据(Version)。
- 不可变性: 每次升级都生成新的蓝图版本,旧版本保留用于回滚与审计。
- 租户绑定: 一个蓝图实例总是归属于某个租户,但蓝图模板可以在租户间共享(通过模板市场或 GitOps 仓库)。
# 简化版蓝图 YAML 结构示例
apiVersion: blueprint.controlplane.io/v1
kind: TenantBlueprint
metadata:
tenant_id: "tenant-abc-123"
blueprint_id: "bp-webapp-v2"
spec:
version: "2.0.0"
resources:
- kind: Deployment
name: web-frontend
replicas: 3
image: "registry.example.com/webapp:2.0.0"
- kind: Service
name: web-svc
ports:
- port: 80
targetPort: 8080
dependencies:
- from: web-frontend
to: redis-cache
parameters:
replicas: 3
logLevel: "info"
2.3 控制平面 (Control Plane)
控制平面是负责接收、校验、存储并分发蓝图数据的核心系统组件。它不直接处理业务流量,而是作为“配置大脑”持续协调租户的期望状态与运行时状态。控制平面通过一组标准化的 API 接口与数据面(Data Plane)或代理(Agent)进行通信。
核心职责:
- 蓝图管理: 版本化存储、差异计算、冲突检测。
- 租户路由: 根据
tenant_id将数据请求分发到对应的隔离存储分区。 - 状态同步: 定期或事件驱动地比对蓝图期望状态与数据面上报的实际状态。
- 升级编排: 控制蓝图升级的灰度策略、回滚条件与数据一致性校验。
2.4 三者关系:从蓝图到租户的闭环
租户、蓝图与控制平面之间的关系可以概括为:控制平面以租户为隔离边界,以蓝图为数据载体,驱动租户内资源的持续升级与合规。 下图展示了这一核心关系架构:
2.5 关系总结矩阵
下表从数据流、生命周期与接口设计三个视角,总结三者的核心关系:
| 视角 | 租户 (Tenant) | 蓝图 (Blueprint) | 控制平面 (Control Plane) |
|---|---|---|---|
| 数据流 | 作为数据分片键(Sharding Key),决定数据路由目标 | 作为数据传输的载荷(Payload),包含完整的期望状态 | 作为数据管道(Pipeline),负责校验、持久化与分发 |
| 生命周期 | 长期存在,跨版本升级 | 每次升级生成新版本,旧版本保留 | 持续运行,驱动版本演进 |
| 接口设计 | 接口路径中必须携带 tenant_id |
接口请求体包含蓝图版本与资源声明 | 接口响应体包含状态差异与一致性凭证 |
设计陷阱提示: 在蓝图升级的数据传输设计中,最容易犯的错误是将租户隔离逻辑与蓝图版本逻辑耦合在同一个接口语义中。正确的做法是:租户隔离由控制平面的路由层处理,蓝图版本由数据层处理,两者在接口契约中保持正交。