2. Service Mesh 基础回顾:Sidecar 代理、控制平面与数据平面、Istio 核心组件介绍
在深入平台门户集成回滚护栏之前,必须重新夯实 Service Mesh 的核心概念。Service Mesh 并非单一软件,而是一种将服务间通信从应用层剥离并下沉为基础设施层的架构模式。本节将围绕 Sidecar 代理、控制平面与数据平面的职责划分,以及 Istio 的核心组件展开,为后续的流量管理与回滚策略建立统一的技术语言。
2.1 Sidecar 代理:流量拦截的原子单元
Sidecar 是 Service Mesh 的“执行者”。它作为一个独立的轻量级代理容器,与业务容器部署在同一个 Pod 中,通过 iptables 规则或透明劫持技术拦截所有进出业务容器的网络流量。
- 流量拦截:自动劫持入站(Inbound)与出站(Outbound)流量,无需修改业务代码。
- 协议解析:支持 HTTP/1.1、HTTP/2、gRPC、TCP 等协议,并提取七层元数据。
- 策略执行:在请求路径上执行重试、超时、熔断、限流等韧性策略。
- 遥测采集:生成详细的访问日志、链路追踪 Span 和指标数据。
关键认知:Sidecar 的本质是“流量代理 + 策略执行点”。在回滚场景中,Sidecar 负责根据控制平面下发的路由规则,将流量瞬间从异常版本切换到稳定版本,其性能直接影响回滚的生效速度。
2.2 数据平面与控制平面:职责分离的架构基石
Service Mesh 将网络功能拆分为两个逻辑平面,这种分离是平台工程实现“声明式运维”的基础。
| 维度 | 数据平面 (Data Plane) | 控制平面 (Control Plane) |
|---|---|---|
| 组成 | 所有 Sidecar 代理的集合(如 Envoy) | 管理组件集合(如 Istiod、Pilot、Mixer) |
| 职责 | 直接处理业务流量,执行路由、负载均衡、健康检查 | 下发配置、管理证书、聚合遥测数据、提供服务发现 |
| 交互方式 | 通过 xDS 协议从控制平面拉取动态配置 | 监听 Kubernetes 资源变化,生成 Envoy 可理解的配置 |
| 故障影响 | 直接影响业务请求的连通性与质量 | 控制平面短暂不可用,数据平面仍可基于缓存配置继续运行 |
| 回滚角色 | 执行流量切换,将请求导向旧版本 Pod | 计算目标版本权重,生成新的路由规则并推送到所有 Sidecar |
架构启示:控制平面与数据平面的解耦使得回滚操作可以“先下发规则,后生效流量”。平台门户只需修改控制平面的配置(如 VirtualService),数据平面会自动收敛到新状态,无需重启任何 Pod。
2.3 Istio 核心组件介绍
Istio 是目前最成熟的 Service Mesh 实现之一,其组件体系完整覆盖了控制平面与数据平面的交互需求。理解这些组件是后续配置回滚策略的前提。
2.3.1 核心组件清单
| 组件名称 | 所属平面 | 核心职责 | 回滚场景中的角色 |
|---|---|---|---|
| Envoy | 数据平面 | 高性能 Sidecar 代理,处理所有进出流量 | 执行流量切换,根据权重分发请求到不同版本 |
| Istiod | 控制平面 | 统一管理 Pilot、Citadel、Galley 功能 | 监听 VirtualService/DestinationRule,生成 Envoy 配置 |
| Pilot | 控制平面 | 服务发现与流量管理规则翻译 | 将回滚路由规则转换为 Envoy 的 RDS/CDS 配置 |
| Citadel | 控制平面 | 证书签发与身份认证 | 确保回滚过程中 mTLS 通信不中断 |
| Galley | 控制平面 | 配置验证与分发 | 校验回滚配置的合法性,防止格式错误导致全局故障 |
| Ingress/Egress Gateway | 数据平面 | 南北向流量管理与安全策略 | 控制外部流量进入网格时的版本路由 |
2.3.2 关键 API 资源:VirtualService 与 DestinationRule
回滚护栏的核心操作对象是 Istio 的流量管理 API。平台门户通过修改以下两个资源实现版本切换:
- VirtualService:定义路由规则,包括匹配条件(Header、URI)、目标权重分配、超时与重试策略。回滚时,将异常版本的权重设为 0,稳定版本的权重设为 100。
- DestinationRule:定义子集(Subset)和负载均衡策略。回滚前需确保稳定版本已注册为子集,并配置了正确的连接池与熔断参数。
常见陷阱:仅修改 VirtualService 的权重而不检查 DestinationRule 中的子集定义,可能导致流量被路由到不存在的版本。平台门户在触发回滚前,必须校验目标版本的子集是否已就绪。
2.4 本节要点总结
- Sidecar 代理是流量拦截与策略执行的原子单元,回滚操作最终由 Sidecar 的路由表切换完成。
- 控制平面与数据平面分离使得回滚配置可以独立于业务 Pod 生命周期进行管理,实现“配置先行,流量后动”。
- Istio 核心组件(Istiod、Envoy、VirtualService、DestinationRule)构成了回滚护栏的技术底座,平台门户通过操作这些 API 资源即可实现声明式回滚。