1. 租户隔离概述

1.1 多租户概念

多租户(Multi-Tenancy)是一种软件架构模式,其中单个软件实例为多个独立的用户组(租户)提供服务。在 Kubernetes 生态中,租户通常对应一个团队、一个项目或一个业务线,每个租户拥有独立的资源视图、访问权限和操作边界。

核心特征: 租户之间在逻辑上完全隔离,彼此不可见、不可访问,但共享同一套基础设施与控制平面。
维度 单租户 多租户
资源归属 所有资源归一个团队 资源按租户划分配额
安全边界 无跨租户风险 需严格网络与权限隔离
运维复杂度 低 高(需隔离策略与审计)
资源利用率 可能闲置 共享池化,利用率高

1.2 Operator 中的租户隔离需求

Operator 作为 Kubernetes 的扩展控制器,负责管理特定应用的生命周期。当 Operator 需要服务多个租户时,隔离需求变得尤为突出:

  • 自定义资源(CR)隔离: 不同租户的 CR 实例必须归属各自的命名空间,避免命名冲突与误操作。
  • 控制器权限隔离: Operator 的 ServiceAccount 应遵循最小权限原则,仅能操作本租户命名空间内的资源。
  • 状态与缓存隔离: Operator 内部维护的缓存(如 Informer)必须按租户划分,防止一个租户的数据泄露给另一个租户。
  • 资源配额与优先级: 每个租户的 Operator 工作负载应受 ResourceQuota 和 LimitRange 约束,避免资源抢占。
  • 审计与可观测性: 日志、指标和事件必须携带租户标签,支持按租户维度进行故障排查与计费。
常见陷阱: 许多 Operator 开发者在初期只关注功能实现,忽略租户隔离设计,导致后期出现跨租户数据泄露或权限越界事故。隔离设计应作为 Operator 架构的第一优先级。

1.3 隔离的层次模型

Kubernetes 提供了三个层次的隔离能力,Operator 需要在这三个层次上分别实施隔离策略:

  1. 集群级隔离: 通过 ClusterRole、ClusterRoleBinding 控制全局资源的访问;使用 PriorityClass、RuntimeClass 等集群范围策略区分租户行为。
  2. 命名空间级隔离: 每个租户独占一个或多个命名空间;通过 NetworkPolicy 限制 Pod 间通信;通过 ResourceQuota 限制总资源消耗。
  3. 资源级隔离: 在 CRD 定义中通过 scope: Namespaced 确保 CR 实例归属命名空间;在 Operator 代码中通过 client.InNamespace() 限定查询范围。
Operator 租户隔离层次模型 集群级隔离(Cluster Scope) ClusterRole · ClusterRoleBinding · PriorityClass · RuntimeClass 全局策略:所有租户共享集群级安全与调度约束 Operator 自身 ServiceAccount 需绑定最小权限 ClusterRole 命名空间级隔离(Namespace Scope) NetworkPolicy · ResourceQuota · LimitRange · RoleBinding 每个租户独占命名空间,网络与资源边界清晰 Operator 通过 WatchNamespace 限定监听范围 资源级隔离(Resource Scope) CRD scope: Namespaced · 控制器 Informer 按命名空间过滤 CR 实例名称可重复(不同命名空间)· 状态缓存隔离 Operator 内每个 Reconciler 必须校验请求的命名空间归属 自上而下逐层收紧

1.4 隔离策略选择矩阵

不同的 Operator 类型和部署场景,需要选择不同的隔离组合。以下矩阵帮助开发者在设计阶段快速决策:

场景 推荐隔离层次 关键策略 Operator 改造点
单一团队使用 Operator 命名空间级 ResourceQuota + Role 无需改造,默认命名空间隔离
多个团队共享集群 命名空间级 + 资源级 NetworkPolicy + CR 命名空间校验 Reconciler 增加命名空间白名单检查
SaaS 平台多租户 集群级 + 命名空间级 + 资源级 ClusterRole 细分 + 租户 CRD 实例隔离 Operator 内实现租户上下文管理器
Operator 自身多实例部署 集群级 LeaderElection + 租户标签选择器 每个 Operator 实例绑定特定租户标签
设计建议: 对于大多数 Operator 项目,建议从命名空间级隔离起步,预留资源级隔离的扩展接口。集群级隔离通常只在超大规模多租户场景下启用,且需要额外的审计与治理组件配合。