Istio 源码学习
20 天 · 每天 30 分钟 · 逐层读懂服务网格的控制面 Istio(Go)——它是指挥 Envoy 数据面的"大脑"。学完 Envoy(数据面)后,来看控制面怎么生成 xDS、注入 sidecar、做 mTLS。
开篇 · 这是个什么项目
Istio 是最主流的服务网格(Service Mesh),Go 编写。上一门课的 Envoy 是"数据面"(真正转发流量),Istio 是"控制面"(istiod)——它是指挥千百个 Envoy 的大脑:你写高层规则(把 10% 流量导到 v2、服务间自动 mTLS 加密),Istio 把它翻译成 Envoy 能懂的 xDS 配置,下发下去。它还负责给每个 Pod 注入 Envoy sidecar、签发证书、采集遥测。
🎯 一句话:Istio = 配置模型(VirtualService/DestinationRule 等 CRD) + 服务注册(发现 K8s 服务) + xDS 生成(翻译成 Envoy 配置) + Sidecar 注入 + mTLS/CA(安全)。你写高层意图 → Istio 翻译 → 通过 xDS 下发给每个 Envoy → Envoy 执行。
控制面 istiod
指挥数据面的大脑:生成配置、注入、签证书。
xDS 生成
高层 CRD → Envoy 的 LDS/CDS/RDS/EDS,与 Envoy xDS 客户端对接。
Sidecar 注入
自动给 Pod 塞进一个 Envoy sidecar。
mTLS / CA
服务间自动双向 TLS、身份证书签发。
higress-group/istio/pilot/(控制面核心)。架构全景(动起来看)
下图那颗发光小球是"配置从用户意图流到 Envoy"的旅程。从上到下:用户写 CRD → istiod 处理 → 生成 xDS → 下发数据面。
Istio 的心智模型是"CRD 意图 → istiod 翻译 → xDS 下发 → Envoy 执行":
怎么用这份教程
每天 30 分钟
一天一个独立页面,跟着"今日小结 + 动手"收尾。
零基础友好
不假设你懂 K8s/Go/服务网格,术语首次出现都有大白话解释。
精确到行号
关键代码标 文件:行号,可在真源码里跳转对照。
项目全景(服务网格控制面)
Istio 是什么、控制面 vs 数据面、和 Envoy 的关系。
istiod 启动
pilot-discovery → bootstrap server,控制面怎么 boot。
配置模型与 CRD
VirtualService/DestinationRule、Config/ConfigStore。
服务注册
serviceregistry、K8s registry、Service/Endpoint 模型。
PushContext 配置快照
生成代理配置用的全量快照怎么建。
xDS DiscoveryServer
ADS gRPC 服务端,与 Envoy xDS 客户端对接。
配置生成总览
生成器 generators 怎么把 CRD 翻译成 xDS。
Listener/Route/Cluster Builder
三大 Builder 怎么构建 Envoy 资源。
Push 与事件模型
ConfigUpdate + debounce 合并,配置变更怎么触发推送。
代理连接生命周期
Envoy 连上、拿初始配置、收更新 + Sidecar scope。
Sidecar 注入
mutating webhook + 注入模板,怎么给 Pod 塞 Envoy。
pilot-agent
sidecar 里跑什么:引导 Envoy、SDS、代理生命周期。
Envoy bootstrap 生成
agent 怎么生成 Envoy 初始配置(连回 Envoy 课)。
mTLS 与 CA
服务间双向 TLS、证书签发、身份 SPIFFE。
SDS + 认证授权
SDS 证书分发、PeerAuthentication/AuthorizationPolicy。
遥测
metrics/trace 采集、Telemetry API、Prometheus 集成。
EnvoyFilter(Higress 重用)
直接 patch Envoy 配置的逃生舱,Higress 重度依赖。
istioctl CLI
install/analyze/proxy-config/proxy-status 内省网格。
Operator 与安装
IstioOperator CRD、profiles、manifests。
收官串讲
Istio 全景、在 Higress 中的角色、承上启下。
✅ Istio 全部 20 天已就绪!(higress-group 系列 2/5)建议先学 Envoy 再学本课。