1. 课程导论:多租户架构的挑战、故障域隔离的必要性、OPA在云原生策略引擎中的角色
1.1 多租户架构的核心挑战
在云原生环境中,多租户架构通过共享同一套基础设施(Kubernetes 集群、网络、存储)来服务多个独立用户或业务单元(租户)。这种共享模式虽然大幅提升了资源利用率,但也引入了以下系统性挑战:
| 挑战维度 | 具体表现 | 典型风险 |
|---|---|---|
| 资源争抢 | 租户间 CPU、内存、网络带宽的无序竞争 | 服务质量(SLO)降级,租户间相互干扰 |
| 安全隔离 | RBAC 配置错误、Pod 逃逸、网络策略遗漏 | 租户 A 越权访问租户 B 的数据或命名空间 |
| 配置冲突 | 全局资源配额、准入控制器、Sidecar 注入规则冲突 | 部署失败、配置漂移、运维事故 |
| 故障扩散 | 单个租户的异常流量、OOM、死循环 Pod 影响集群稳定性 | 控制面过载、节点资源耗尽、全局级联故障 |
| 审计与合规 | 租户级操作日志分散、策略执行记录缺失 | 无法通过合规审计,事故溯源困难 |
关键认知: 多租户不是简单的“命名空间隔离”,而是资源、安全、策略、故障边界的系统性工程。任何一层的隔离失效,都会导致租户间的信任崩塌。
1.2 故障域隔离的必要性
故障域隔离(Fault Domain Isolation)是指在共享基础设施中,通过架构设计和策略控制,将单个租户的故障影响范围限制在最小边界内,防止故障像“多米诺骨牌”一样扩散到其他租户或全局控制面。
在 Kubernetes 多租户场景下,故障域隔离需要覆盖以下三个层次:
- 计算故障域: 通过 Pod 反亲和、节点选择器、拓扑分布约束,确保租户的工作负载分布在不同的物理节点或可用区。
- 网络故障域: 通过 NetworkPolicy、服务网格(Istio)的流量限制、出口网关隔离,阻断租户间的非授权流量和异常广播。
- 策略故障域: 通过 OPA/Gatekeeper 的约束模板(ConstraintTemplate)和绑定(Constraint),为每个租户独立定义资源配额、安全上下文、准入规则,避免全局策略误伤。
实战视角: 故障域隔离的最终目标是实现“爆炸半径最小化”。在演练场景中,我们通常通过注入 CPU 压力、网络延迟、策略拒绝等故障,验证隔离边界是否真正生效。
1.3 OPA 在云原生策略引擎中的角色
Open Policy Agent(OPA)是一个开源的、通用的策略引擎,它将策略从具体的软件系统中解耦出来,提供统一的声明式策略语言——Rego。在云原生生态中,OPA 通常以 Gatekeeper(Kubernetes 准入控制器)的形式部署,承担以下核心角色:
- 策略执行点: 在资源创建、更新、删除的准入阶段拦截请求,根据 Rego 规则决定允许或拒绝。
- 策略审计与合规: 对集群中已有的资源进行周期性审计,发现违反策略的配置并生成报告。
- 指标暴露与告警触发: 通过 Prometheus 指标接口暴露策略评估结果(如拒绝次数、违反约束的资源数),为告警分层提供数据源。
常见误区: OPA 不是“防火墙”,也不是“资源配额控制器”。它的核心价值在于将“策略逻辑”与“系统逻辑”分离,让 SRE 团队可以独立于应用代码修改和测试策略。在多租户故障域隔离演练中,OPA 是验证策略边界是否生效的关键观测点。
1.4 OPA 指标采集与告警分层的价值
在多租户故障域隔离演练中,单纯的策略执行是不够的——我们需要通过指标量化隔离效果,并通过告警分层快速定位故障边界。以下是本课程的核心技术栈与价值:
| 组件 | 角色 | 在多租户演练中的具体作用 |
|---|---|---|
| OPA / Gatekeeper | 策略引擎 | 执行租户级约束,暴露 gatekeeper_constraints_violations 等指标 |
| Prometheus | 指标采集 | 从 OPA、Kubernetes 组件、节点采集故障域相关指标 |
| Alertmanager | 告警路由 | 根据租户标签、故障等级进行告警分层与静默 |
| Grafana | 可视化 | 展示租户级故障域隔离状态、策略违反趋势 |
1.5 本课程演练场景概览
在后续章节中,我们将基于一个模拟的多租户 Kubernetes 集群(包含 3 个租户:Tenant-A、Tenant-B、Tenant-C),逐步完成以下演练:
- 环境搭建: 部署 OPA/Gatekeeper、Prometheus、Alertmanager、Grafana。
- 策略编写: 使用 Rego 编写租户级资源配额、安全上下文、网络隔离策略。
- 故障注入: 模拟 CPU 压力、策略违反、网络分区等故障场景。
- 指标采集: 配置 Prometheus 采集 OPA 审计指标与集群资源指标。
- 告警分层: 基于租户标签和故障等级配置 Alertmanager 路由与抑制规则。
- 验证与复盘: 通过 Grafana 仪表盘验证故障域隔离效果,分析告警响应流程。
学习建议: 如果你是第一次接触 OPA/Rego,建议先快速浏览 Rego 语法基础(第 3 章)。本课程的所有策略代码和告警配置都会提供完整示例,你可以直接用于实验环境。