《Istio权威指南-下》目录

目 录

架 构 篇

第15章 Pilot的架构.. 2

15.1 Pilot的基本架构... 2

15.1.1 Istio的服务模型.. 4

15.1.2 xDS协议... 6

15.2 Pilot的原理.. 12

15.2.1 xDS服务器... 13

15.2.2 服务发现... 24

15.2.3 配置规则发现.. 29

15.2.4 xDS的生成和分发... 35

15.3 安全插件... 42

15.3.1 认证插件... 43

15.3.2 授权插件... 46

15.4 Pilot的关键设计... 48

15.4.1 三级缓存模型.. 48

15.4.2 去抖动分发... 50

15.4.3 防过度分发... 51

15.4.4 增量EDS. 51

15.4.5 资源隔离... 53

15.4.6 自动管理虚拟机工作负载... 54

15.5 本章小结... 55

第16章 Citadel的架构.. 56

16.1 Istio的证书和身份管理... 56

16.2 Citadel的基本架构.. 59

16.3 Citadel的核心原理.. 60

16.3.1 核心组件的初始化... 61

16.3.2 CA服务器... 62

16.3.3 证书签发... 63

16.3.4 证书轮转器... 65

16.4 本章小结... 67

第17章 Galley的架构.. 68

17.1 简化的Galley. 68

17.2 Galley的整体架构... 69

17.2.1 早期的MCP. 70

17.2.2 基于xDS的MCP. 72

17.3 Galley的核心工作原理.. 72

17.3.1 启动初始化... 72

17.3.2 API校验... 75

17.3.3 对API配置的管理... 78

17.4 本章小结... 79

第18章 Pilot-agent的架构.. 80

18.1 Pilot-agent的用途... 81

18.2 Pilot-agent的核心架构.. 81

18.3 Pilot-agent的原理... 83

18.3.1 Envoy的启动... 84

18.3.2 优雅退出... 85

18.3.3 xDS代理... 87

18.3.4 证书管理... 90

18.3.5 DNS服务器... 91

18.3.6 应用健康检查.. 92

18.4 本章小结... 93

第19章 Envoy的架构.. 94

19.1 Envoy的整体架构... 95

19.1.1 Envoy的内部架构... 96

19.1.2 Envoy的通信架构... 100

19.2 Envoy的内存管理... 110

19.2.1 堆内存管理... 110

19.2.2 Buffer管理.. 111

19.3 Envoy过滤器的架构.. 114

19.3.1 过滤器的注册.. 115

19.3.2 过滤器的回调方法... 117

19.3.3 过滤器的挂起与恢复.. 118

19.4 Envoy的初始化流程.. 119

19.4.1 静态配置... 120

19.4.2 动态配置... 121

19.4.3 Envoy的创建及初始化流程... 124

19.4.4 Envoy的运行流程... 128

19.4.5 目标服务Cluster的创建... 129

19.4.6 监听器的创建.. 131

19.5 Envoy的网络及线程模型... 133

19.5.1 Server主线程.. 134

19.5.2 Accesslog线程.. 136

19.5.3 工作线程... 138

19.5.4 GuardDog线程.. 139

19.5.5 线程间的同步.. 139

19.6 Envoy的热升级流程.. 141

19.7 Envoy的新连接处理流程... 144

19.8 Envoy的请求及响应数据处理流程.. 145

19.8.1 对下游请求数据的接收及处理... 146

19.8.2 对上游请求数据的处理及发送... 149

19.8.3 对上游响应数据的接收及发送... 151

19.9 xDS的原理及工作流程... 153

19.10 安全证书处理... 155

19.11 WASM虚拟机的原理... 158

19.12 本章小结.. 161

第20章 Istio-proxy的架构.. 162

20.1 Istio-proxy的基本架构.. 162

20.2 Istio-proxy的原理... 163

20.2.1 Istio-proxy的整体工作流程.. 163

20.2.2 L4 metadata_exchange的工作流程.. 164

20.2.3 L7 metadata_exchange扩展的工作流程... 169

20.2.4 Stats的工作流程... 170

20.3 本章小结... 173

源 码 篇

第21章 Pilot源码解析.. 175

21.1 启动流程... 175

21.2 关键代码解析... 177

21.2.1 ConfigController 178

21.2.2 ServiceController 186

21.2.3 xDS的异步分发.. 194

21.2.4 对xDS更新的预处理... 202

21.2.5 xDS配置的生成及分发.. 208

21.3 本章小结... 211

第22章 Citadel源码解析.. 212

22.1 启动流程... 212

22.1.1 Istio CA的创建... 213

22.1.2 SDS服务器的初始化.. 214

22.1.3 Istio CA的启动... 215

22.2 关键代码解析... 216

22.2.1 CA 服务器的核心原理.. 216

22.2.2 证书签发实体IstioCA. 218

22.2.3 CredentialsController的创建和核心原理.. 222

22.3 本章小结... 224

第23章 Galley源码解析.. 225

23.1 启动流程... 225

23.1.1 Galley WebhookServer的初始化... 226

23.1.2 ValidatingWebhookConfiguration控制器的初始化.. 226

23.2 关键代码解析... 228

23.2.1 配置校验... 228

23.2.2 Validating控制器的实现.. 232

23.3 本章小结... 235

第24章 Pilot-agent源码解析.. 236

24.1 整体架构... 236

24.2 启动及监控.. 238

24.3 xDS转发服务... 243

24.4 SDS证书服务... 248

24.5 健康检查... 255

24.5.1 应用容器的LivenessProbe探测... 255

24.5.2 应用容器的ReadinessProbe探测.. 257

24.5.3 Envoy进程的ReadinessProbe探测... 258

24.5.4 Pilot-agent进程的LivenessProbe探测... 262

24.6 本章小结... 265

第25章 Envoy源码解析.. 266

25.1 Envoy的初始化... 266

25.1.1 启动参数bootstrap的初始化.. 267

25.1.2 初始化观测指标... 268

25.1.3 过滤器注册及信息补齐... 269

25.1.4 Envoy自身信息解析... 273

25.1.5 Admin API的初始化.. 273

25.1.6 Worker的初始化... 276

25.1.7 Dispatcher内存延迟析构... 279

25.1.8 CDS的初始化.. 283

25.1.9 LDS的初始化.. 286

25.1.10 初始化观测管理系统.. 287

25.1.11 启动Stats定期刷新.. 292

25.1.12 GuardDog的初始化... 292

25.2 热重启的流程... 296

25.3 Envoy的运行和连接创建... 298

25.3.1 启动Worker工作线程... 299

25.3.2 监听器的加载.. 301

25.3.3 接收连接... 304

25.4 Envoy接收及处理数据... 309

25.4.1 读取数据... 310

25.4.2 接收数据... 311

25.4.3 处理数据... 312

25.5 Envoy发送数据到服务端... 317

25.5.1 路由匹配... 317

25.5.2 获取连接池... 320

25.5.3 创建上游请求.. 325

25.6 Envoy收到服务端响应... 333

25.6.1 接收响应数据.. 333

25.6.2 发送响应数据.. 335

25.7 xDS流程解析... 337

25.7.1 xDS公共订阅... 337

25.7.2 xDS推送... 342

25.7.3 LDS更新... 343

25.7.4 SDS订阅... 350

25.8 遥测元数据存储... 352

25.8.1 创建遥测元数据... 352

25.8.2 收集Stats观测数据.. 360

25.8.3 定义静态指标.. 361

25.9 WASM扩展... 363

25.9.1 WASM虚拟机的启动... 363

25.9.2 WASM虚拟机的运行... 374

25.10 本章小结.. 387

第26章 Istio-proxy源码解析.. 388

26.1 metadata_exchange. 388

26.2 遥测数据Stats的上报.. 395

26.3 源码地址... 406

26.4 本章小结... 408

附录A 源码仓库介绍.............................................................................................. 409

附录B 实践问题总结.............................................................................................. 416

附录C 服务网格术语表.......................................................................................... 432

结 语... 447