Envoy 数据面系列 已经把消费侧讲清:资源树、ADS、warming、ACK 不等于生效。Service Mesh 给出 sidecar 税与 Ambient 地图。Gateway API 覆盖南北向资源模型。中间仍缺一层:istiod 如何把 CRD / HTTPRoute 编译成某一代理上的 LDS/RDS/CDS/EDS/SDS,推给谁,以及为何「控制面已推送」仍可能黑洞或旧路由。
本系列回答:网格控制面内核里,一次配置变更如何变成可核对的 xDS 图,失败责任落在翻译、推送还是数据面 warming。
写:
- istiod 进程模型与代理订阅身份。
- watch → model → XdsServer → ADS 推送图。
- Service/Endpoint、VirtualService/HTTPRoute、DestinationRule、Authn/Authz/SDS 翻译。
- Sidecar / Telemetry / EnvoyFilter 作用域与脚枪。
- 生产侧 SotW/Delta、NACK/warming 责任、多集群扇出。
- Ambient(ztunnel / waypoint)、Linkerd 对照、排障与选型收束。
不写:architecture/76 税文重写、Gateway API CRD 教程、Envoy Filter/HCM 内核、Cilium eBPF 全书、Istio vs Linkerd 胜负、VirtualService 菜谱、Wasm/EnvoyFilter SDK。
系列状态:01–16 已全部发布(2026-08-11)。 规划见 PLAN.md。无集群 / istiod 环境则不粘贴伪造
istioctl/config_dump输出。
版本锚定:Istio 1.30.x(源码与文档钉 1.30.3);数据面机制外链 Envoy v1.39.0 系列,不在本系列重写。
适合谁看
- 平台 / Mesh 控制面与联调工程师,要把「能 apply」推进到「能归因推送」。
- 读完 Envoy 09–11、15,需要生产侧坐标的读者。
- 读过 architecture/76,要机制而非再看一遍选型税叙事的架构师。
与 Envoy 系列 / architecture/76 的分工
| 维度 | Envoy 系列 | architecture/76 | 本系列 |
|---|---|---|---|
| 定位 | 数据面代理内核 | Mesh 税与形态地图 | 控制面翻译与推送内核 |
| xDS | 消费侧 ACK / warming | 名词与产品对照 | 生产侧编译、订阅、推送图 |
| Ambient | 选型边界 | 草图与代价 | ztunnel / waypoint 作为 xDS 客户端 |
| 不负责 | istiod 全书 | CRD→xDS 路径 | Filter/HCM;eBPF 全书;税文重写 |
读法:只要「建立 Mesh 坐标系」→ 76 足够;要「代理卡在哪、warming 为何未完成」→ Envoy;要「控制面推了什么、推给谁、NACK 谁负责」→ 本系列 01 → 04 → 06 → 11 → 15。
一、这个领域最值得关注的 5 个问题
- 高层 CRD 如何变成某一个代理上的 LDS/RDS/CDS/EDS/SDS 图? → 第 1、5–9 篇。
- 什么叫一次 push、谁在订阅,「控制面已推送」为何不等于「Envoy 在服务」? → 第 4、10–11、15 篇。
- sidecar / ztunnel / waypoint / Gateway 作为 xDS 客户端差在哪? → 第 3、13 篇。
- 端点抖动下,SotW/Delta 与 make-before-break 的失败点在 istiod 还是 Envoy? → 第 10–11、15 篇;外链 Envoy 10–11。
- 何时该停在 Istio 翻译层,何时该交给 Gateway API / eBPF L4? → 第 6、13、16 篇。
二、篇目依赖关系与推荐阅读路径
flowchart TD
overview["01 Overview"] --> istiod["02 istiod Process"]
istiod --> identity["03 Proxy Identity"]
identity --> push["04 Push Graph"]
push --> cdseds["05 CDS EDS"]
cdseds --> rds["06 VS HTTPRoute RDS"]
rds --> dr["07 DestinationRule"]
dr --> auth["08 Authn Authz SDS"]
auth --> scope["09 Sidecar EnvoyFilter"]
push --> sotw["10 Producer SotW Delta"]
sotw --> nack["11 NACK Warming"]
nack --> multi["12 Multicluster"]
identity --> ambient["13 Ambient"]
ambient --> linkerd["14 Linkerd Contrast"]
nack --> trouble["15 Troubleshoot"]
linkerd --> select["16 Selection"]
multi --> select
trouble --> select
scope --> select
| 路径 | 篇目 | 适合 |
|---|---|---|
| 必读核心 | 1 → 2 → 4 → 6 → 11 → 15 | 快速建立坐标系 |
| 翻译深挖 | 5 → 6 → 7 → 8 → 9 | CRD 如何落到资源图 |
| 推送与失败 | 4 → 10 → 11 → 15 | 控制面联调 |
| Ambient / 对照 | 3 → 13 → 14 → 16 | 形态与选型 |
| 完整通读 | 1 → … → 16 | 系统掌握 |
三、目录与每篇价值点
第一部分:坐标与推送图(01–04)
- 控制面全景
- 相对 Envoy 09–11 / architecture/76 / Gateway 18 的缺口;五条坐标系与 16 篇路线。
- istiod
进程模型
- discovery / config / CA / injection 职责;哪些不在数据面热路径。
- 代理身份与订阅
- sidecar vs ztunnel vs waypoint vs Gateway 订阅什么、为何不同。
- 推送图
- watch → 内部 model → XdsServer → ADS;一次 push 的边界。
第二部分:翻译层(05–09)
- Service
/ Endpoint → CDS/EDS
- Workload 与端点如何进入集群与负载均衡集合。
- VirtualService
/ HTTPRoute → RDS
- 路由编译;与 Gateway API 双轨冲突边界(非 CRD 教程)。
- DestinationRule
- subset、outlier、TLS context 如何挂到 cluster。
- Authn /
Authz / SDS
- PeerAuthentication / AuthorizationPolicy 落到链与证书分发。
- Sidecar
/ Telemetry / EnvoyFilter
- 作用域合并顺序与常见脚枪(非 SDK 教程)。
第三部分:规模、Ambient 与收束(10–16)
- 生产侧
SotW / Delta
- debounce、全量推、端点抖动下的控制面行为。
- NACK
/ warming 责任
- CDS→EDS→LDS→RDS 顺序;与 Envoy 消费侧如何对齐排障。
- 多集群
east-west
- 发现扇出机制;不做厂商 bake-off。
- Ambient:ztunnel
/ waypoint
- L4 / L7 作为不同 xDS 客户端;故障域边界。
- Linkerd
对照
- 非 xDS gRPC 控制面一篇收住;不写胜负。
- 生产排障
istioctl/ proxy-config 与 Envoy 15 / config_dump 对齐清单。
- 选型收束
- 相对 Gateway API / eBPF L4;回指 Envoy 开放问题 5.1/5.2。
延伸阅读
同主题继续阅读
把当前热点继续串成多页阅读,而不是停在单篇消费。
【Istio 控制面】控制面全景:从 CRD 到 xDS 的翻译与推送内核
定位 Istio 控制面内核相对 Envoy 消费侧、Service Mesh 税文与 Gateway API 资源模型的缺口;给出五条坐标系、16 篇地图与本系列明确不写的范围,钉住 istiod 1.30.3 为主线。
【Istio 控制面】VirtualService / mesh HTTPRoute → RDS:两条编译路径,一份路由表
拆解 istiod 的 RdsGenerator 如何把 VirtualService 与 Gateway API HTTPRoute(含 GAMMA mesh 模式)都编译成同一份内部路由模型,说明为何双轨输入会在同一 host 上产生冲突,以及两套 API 的合并顺序为何一个确定、一个未定义。
【Istio 控制面】istiod 进程模型:discovery、config、CA 与注入的边界
拆解 pilot-discovery 二进制内部的组件化启动顺序:CA 为何先于 Discovery 初始化、注入 Webhook 与配置校验为何是独立 HTTPS 服务、以及哪些组件真正位于 xDS 推送热路径上。
【Istio 控制面】代理身份与订阅:sidecar、ztunnel、waypoint、Gateway 谁在订阅什么
拆解 istiod 如何从节点 ID 与 mTLS/JWT 得到一个 model.Proxy 身份,以及 NodeType 如何决定该连接会订阅哪一套 xDS 资源类型:sidecar/Router 走标准 LDS/RDS/CDS/EDS,ztunnel 走自定义 Address/Authorization,waypoint 是 Envoy 但推送触发条件不同。