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。
Service Mesh 双平面架构 控制平面 (Control Plane) Istiod (Pilot) Citadel (安全) Galley (配置) K8s API Server 数据平面 (Data Plane) — Sidecar 代理集群 Pod A App v1 Sidecar iptables 透明劫持 Pod B App v2 Sidecar iptables 透明劫持 Pod C App v1 Sidecar iptables 透明劫持 xDS 协议 (LDS/RDS/CDS/EDS)

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 中的子集定义,可能导致流量被路由到不存在的版本。平台门户在触发回滚前,必须校验目标版本的子集是否已就绪。
Istio 流量管理回滚流程 平台门户 触发回滚 API Kubernetes API 更新 VirtualService Istiod 生成 xDS 配置 数据平面 Sidecar 集群 接收 xDS 更新 → 更新本地路由表 → 新请求按新权重分发 回滚生效:异常版本流量归零,稳定版本流量 100% 回滚完成 → 平台门户展示新状态

2.4 本节要点总结

  • Sidecar 代理是流量拦截与策略执行的原子单元,回滚操作最终由 Sidecar 的路由表切换完成。
  • 控制平面与数据平面分离使得回滚配置可以独立于业务 Pod 生命周期进行管理,实现“配置先行,流量后动”。
  • Istio 核心组件(Istiod、Envoy、VirtualService、DestinationRule)构成了回滚护栏的技术底座,平台门户通过操作这些 API 资源即可实现声明式回滚。