2. Istio 架构基础:数据面与控制面组件详解

在深入 Serverless 控制面安全策略之前,必须理解 Istio 自身的架构分层。Istio 采用经典的控制面/数据面分离架构,其中控制面负责策略下发与配置管理,数据面负责流量转发与安全执行。本章聚焦四个核心控制面组件:Pilot、Mixer、Citadel、Galley,并阐明它们在 Serverless 场景下的职责变化。

2.1 整体架构分层

Istio 控制面由一组微服务组成,统一管理服务网格内的流量路由、策略执行和证书生命周期。数据面则通过 Sidecar Proxy(Envoy)代理所有进出流量。

关键认知: Serverless 控制面中,Pilot 和 Citadel 是安全策略的核心执行者,Mixer 已被逐步废弃,Galley 承担配置验证与分发的前置角色。
Istio 控制面与数据面组件关系图 Istio 控制面与数据面组件关系 控制面 (Control Plane) Pilot Mixer Citadel Galley 数据面 (Data Plane) Sidecar Proxy 服务 A 服务 B 说明:控制面组件通过 xDS 协议下发配置,Sidecar Proxy 执行流量转发与安全策略

2.2 Pilot:流量管理与安全策略下发

Pilot 是 Istio 控制面的流量管理核心,负责将高级路由规则和策略转换为 Envoy 可理解的配置,并通过 xDS API 下发到所有 Sidecar Proxy。

功能维度 说明 Serverless 场景影响
服务发现 对接平台注册中心(Kubernetes、Consul 等),维护服务端点列表 需适配 Serverless 函数的动态扩缩容与临时端点
流量路由 解析 VirtualService、DestinationRule,生成路由规则 支持基于请求头的函数灰度发布
安全策略下发 将 AuthorizationPolicy、PeerAuthentication 转换为 Envoy RBAC 过滤器 Serverless 场景下需实时更新策略,避免冷启动延迟
故障恢复 支持超时、重试、熔断等弹性模式 函数执行时间短,需调整超时阈值
安全要点: Pilot 下发的安全策略包括 mTLS 模式(STRICT/PERMISSIVE)、JWT 认证规则以及基于角色的访问控制(RBAC)。在 Serverless 控制面中,Pilot 必须支持策略的热更新,以匹配函数的快速创建与销毁。

2.3 Mixer:策略检查与遥测(已废弃)

Mixer 曾是 Istio 的策略决策点和遥测收集中心,但在 Istio 1.5+ 版本中已被逐步移除,其功能被合并到 Envoy 和新的 Telemetry API 中。

  • 历史职责: 每次请求到达时,Sidecar 向 Mixer 发送 Check 请求,验证调用方是否具备权限;同时上报日志和指标。
  • 废弃原因: 引入额外的网络延迟(每次请求增加 1-5ms),且难以水平扩展,不适合 Serverless 的高并发短连接场景。
  • Serverless 替代方案: 使用 Envoy 内置的 RBAC 过滤器进行本地策略检查,通过 Wasm 插件或 Stats 过滤器收集遥测数据。
注意: 在 Serverless 控制面设计中,不应再依赖 Mixer 组件。所有策略检查应下沉到数据面本地执行,避免引入额外的远程调用开销。

2.4 Citadel:证书管理与身份安全

Citadel 是 Istio 的安全核心,负责管理服务网格内的 TLS 证书、密钥和身份认证。它是实现 mTLS 和 SPIFFE 身份的基础组件。

Citadel 证书签发与身份认证流程 Citadel 证书签发与身份认证流程 Citadel (CA) Sidecar A Sidecar B ① 请求证书 (CSR) ② 请求证书 (CSR) ③ mTLS 双向认证 说明:Citadel 基于 SPIFFE 标准为每个服务颁发 X.509 证书,证书中包含服务身份(Service Account) Serverless 场景下,证书生命周期需与函数实例生命周期对齐,支持短证书(TTL 可低至 1 小时)

2.5 Galley:配置验证与分发

Galley 是 Istio 控制面的配置管理网关,负责验证、处理和分发用户提交的 Istio 配置(如 VirtualService、AuthorizationPolicy 等)。

功能 详细说明 Serverless 适配
配置验证 对用户提交的 YAML 进行语法校验、语义检查和资源引用验证 需支持 Serverless 函数特有的资源类型(如 Knative Service)
配置转换 将 Istio CRD 转换为内部模型,供 Pilot 和 Citadel 消费 需处理函数动态路由的配置转换
配置分发 通过 Mesh Config Protocol (MCP) 将配置推送到 Pilot 等组件 需支持增量更新,避免全量推送导致控制面压力
配置状态报告 反馈配置是否被成功应用,提供错误信息 Serverless 场景下需快速反馈配置状态
安全配置流: 用户提交 AuthorizationPolicy → Galley 验证 → 转换为内部模型 → 分发至 Pilot → Pilot 通过 xDS 下发至 Sidecar Proxy → Sidecar 本地执行 RBAC 策略。整个过程在 Serverless 控制面中要求端到端延迟低于 100ms。

2.6 组件职责对比总结

下表从安全策略执行的角度,对比四个控制面组件的核心职责与 Serverless 适配要点:

组件 核心职责 安全策略角色 Serverless 关键适配
Pilot 流量管理、策略下发 将安全策略转换为 Envoy 过滤器配置 支持策略热更新,适配函数动态扩缩容
Mixer 策略检查、遥测(已废弃) 已不再承担安全策略执行 完全避免使用,改用 Envoy 本地策略
Citadel 证书管理、身份认证 签发 mTLS 证书,管理 SPIFFE 身份 短证书生命周期,与函数实例对齐
Galley 配置验证、分发 验证安全策略配置的合法性 支持增量配置更新,快速反馈状态

2.7 本章小结