Istio权威指南 下 云原生服务网格Istio架构与源码
作 者:张超盟 等 编
定 价:128
出 版 社:电子工业出版社
出版日期:2023年05月01日
页 数:468
装 帧:平装
ISBN:9787121453052
"(1)中国信通院何宝宏、CNCF CTO Chris Aniszczyk、上海交通大学致远讲席教授过敏意、华为云CTO张宇昕、华为云首席产品官方国伟、Istio TOC Member Lin Sun、John Howard、Envoy与Istio核心维护者周礼赞、CNCF中国区总监Keith Chan倾情力荐!
(2)由华为云云原生团队倾力打造,详尽解读Istio原理与实践
(3)凝聚了华为云云原生团队在Istio社区及产品领域耕耘多年的长期工程实践和宝贵经验积累
(4)可以帮助读者从多个维度理解云原生、服务网格等相关技术,深入解析其中的概念和技术点
(5)可以帮助读者基于Istio实现应用流量管理、零信任安全、应用可观测性等。"
本书是《Istio权威指南》的下册,重点讲解Istio的架构与源码,分为架构篇和源码篇。架构篇从架构的视角分别介绍Istio各组件的设计思想、数据模型和核心工作流程。在Istio1.16中,Istiod以原有的Pilot为基础框架构建了包含Pilot、Citadel、Galley等组件的统一控制面。本书第15、16、17章会分别介绍以上三个组件各自的架构、模型和流程机制;第18、19、20章依次讲解服务网格数据面上Pilot-agent、Envoy和Istio-proxy的架构和流程,包括三者的结合关系,配合Istio控制面组件实现流量管理功能,特别是Envoy的架构、模型和关键流程。源码篇包括第21~26章,和《Istio权威指南(上)》中架构篇的6章对应,分别介绍Istio管理面组件Pilot、Citadel、Galley与数据面Pilot-agent、Envoy和Istio-proxnull
"——张超盟
华为云应用服务网格架构师,拥有15年以上的开发经验,先后负责过华为云容器应用运维、微服务平台、云服务目录、云服务可靠性、服务网格等云原生产品的架构设计与开发工作,主导过多个重大项目的云原生和微服务化生产落地。在服务网格、Kubernetes容器服务、微服务架构、应用性能管理、大数据、DevOps工具等方面有深入的研究与实践。Istio社区成员,KubeCon、IstioCon及ServiceMeshCon等会议的演讲者,技术图书作者。早期曾在中铁一局从事路桥建设工作。
——徐中虎
华为云云原生团队核心成员,开源技术专家,服务网格Istio核心维护者,Istio社区指导委员会成员,Kubernetes项目核心贡献者,批量计算项目Volcano的核心维护者,拥有丰富的开源工作经验。主要研究方向有微服务架构、服务网格、容器编排平台Kubernetes和未来的分布式云原生架null
无
架构篇
第15章Pilot的架构2
15.1Pilot的基本架构2
15.1.1Istio的服务模型4
15.1.2xDS协议6
15.2Pilot的原理12
15.2.1xDS服务器13
15.2.2服务发现24
15.2.3配置规则发现29
15.2.4xDS的生成和分发35
15.3安全插件42
15.3.1认证插件43
15.3.2授权插件46
15.4Pilot的关键设计48
15.4.1三级缓存模型48
15.4.2去抖动分发50
15.4.3防过度分发51
15.4.4增量EDS51
15.4.5资源隔离53
15.4.6自动管理虚拟机工作负载54
15.5本章小结55
第16章Citadel的架构56
16.1Istio的证书和身份管理56
16.2Citadel的基本架构59
16.3Citadel的核心原理60
16.3.1核心组件的初始化61
16.3.2CA服务器62
16.3.3证书签发63
16.3.4证书轮转器65
16.4本章小结67
第17章Galley的架构68
17.1简化的Galley68
17.2Galley的整体架构69
17.2.1早期的MCP70
17.2.2基于xDS的MCP72
17.3Galley的核心工作原理72
17.3.1启动初始化72
17.3.2API校验75
17.3.3对API配置的管理78
17.4本章小结79
第18章Pilot-agent的架构80
18.1Pilot-agent的用途81
18.2Pilot-agent的核心架构82
18.3Pilot-agent的原理84
18.3.1Envoy的启动84
18.3.2优雅退出85
18.3.3xDS代理87
18.3.4证书管理90
18.3.5DNS服务器91
18.3.6应用健康检查92
18.4本章小结93
第19章Envoy的架构94
19.1Envoy的整体架构95
19.1.1Envoy的内部架构96
19.1.2Envoy的通信架构100
19.2Envoy的内存管理110
19.2.1堆内存管理110
19.2.2Buffer管理111
19.3Envoy过滤器的架构114
19.3.1过滤器的注册115
19.3.2过滤器的回调方法117
19.3.3过滤器的挂起与恢复118
19.4Envoy的初始化流程119
19.4.1静态配置120
19.4.2动态配置121
19.4.3Envoy的创建及初始化流程124
19.4.4Envoy的运行流程128
19.4.5目标服务Cluster的创建129
19.4.6监听器的创建131
19.5Envoy的网络及线程模型133
19.5.1Server主线程134
19.5.2Accesslog线程136
19.5.3工作线程138
19.5.4GuardDog线程139
19.5.5线程间的同步139
19.6Envoy的热升级流程141
19.7Envoy的新连接处理流程144
19.8Envoy的请求及响应数据处理流程145
19.8.1对下游请求数据的接收及处理146
19.8.2对上游请求数据的处理及发送149
19.8.3对上游响应数据的接收及发送151
19.9xDS的原理及工作流程152
19.10安全证书处理155
19.11WASM虚拟机的原理158
19.12本章小结161
第20章Istio-proxy的架构162
20.1Istio-proxy的基本架构162
20.2Istio-proxy的原理163
20.2.1Istio-proxy的整体工作流程163
20.2.2L4metadata_exchange的工作流程164
20.2.3L7metadata_exchange扩展的工作流程169
20.2.4Stats的工作流程170
20.3本章小结173
源码篇
第21章Pilot源码解析175
21.1启动流程175
21.2关键代码解析177
21.2.1ConfigController178
21.2.2ServiceController186
21.2.3xDS的异步分发194
21.2.4对xDS更新的预处理202
21.2.5xDS配置的生成及分发208
21.3本章小结211
第22章Citadel源码解析212
22.1启动流程212
22.1.1IstioCA的创建213
22.1.2SDS服务器的初始化214
22.1.3IstioCA的启动215
22.2关键代码解析216
22.2.1CA服务器的核心原理216
22.2.2证书签发实体IstioCA218
22.2.3CredentialsController的创建和核心原理222
22.3本章小结224
第23章Galley源码解析225
23.1启动流程225
23.1.1GalleyWebhookServer的初始化226
23.1.2ValidatingWebhookConfiguration控制器的初始化226
23.2关键代码解析228
23.2.1配置校验228
23.2.2Validating控制器的实现232
23.3本章小结235
第24章Pilot-agent源码解析236
24.1整体架构236
24.2启动及监控238
24.3xDS转发服务243
24.4SDS证书服务248
24.5健康检查255
24.5.1应用容器的LivenessProbe探测255
24.5.2应用容器的ReadinessProbe探测257
24.5.3Envoy进程的ReadinessProbe探测258
24.5.4Pilot-agent进程的LivenessProbe探测262
24.6本章小结265
第25章Envoy源码解析266
25.1Envoy的初始化266
25.1.1启动参数bootstrap的初始化267
25.1.2初始化观测指标268
25.1.3过滤器注册及信息补齐269
25.1.4Envoy自身信息解析273
25.1.5AdminAPI的初始化273
25.1.6Worker的初始化276
25.1.7Dispatcher内存延迟析构279
25.1.8CDS的初始化283
25.1.9LDS的初始化286
25.1.10初始化观测管理系统287
25.1.11启动Stats定期刷新292
25.1.12GuardDog的初始化292
25.2热重启的流程296
25.3Envoy的运行和连接创建298
25.3.1启动Worker工作线程299
25.3.2监听器的加载301
25.3.3接收连接304
25.4Envoy接收及处理数据309
25.4.1读取数据310
25.4.2接收数据311
25.4.3处理数据312
25.5Envoy发送数据到服务端317
25.5.1路由匹配317
25.5.2获取连接池320
25.5.3创建上游请求325
25.6Envoy收到服务端响应333
25.6.1接收响应数据333
25.6.2发送响应数据335
25.7xDS流程解析337
25.7.1xDS公共订阅337
25.7.2xDS推送342
25.7.3LDS更新343
25.7.4SDS订阅350
25.8遥测元数据存储352
25.8.1创建遥测元数据352
25.8.2收集Stats观测数据360
25.8.3定义静态指标361
25.9WASM扩展363
25.9.1WASM虚拟机的启动363
25.9.2WASM虚拟机的运行374
25.10本章小结387
第26章Istio-proxy源码解析388
26.1metadata_exchange388
26.2遥测数据Stats的上报395
26.3源码地址406
26.4本章小结408
结语409