技术教育社区
www.teccses.org

ISTIO权威指南(下):云原生服务网格ISTIO架构与源码

封面

作者:张超盟等

页数:468

出版社:电子工业出版社

出版日期:2023

ISBN:9787121453052

电子书格式:pdf/epub/txt

内容简介

本书是《Istio权威指南》的下册,重点讲解Istio的架构与源码,分为架构篇和源码篇。 架构篇从架构的视角分别介绍Istio各组件的设计思想、数据模型和核心工作流程。在Istio 1.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-proxy的主要代码结构、代码流程及关键代码片段。本篇配合架构篇中每个组件的架构和机制,对Istio重要组件的实现进行了更详细的讲解和剖析,为读者深入研读Istio相关代码,以及在生产环境中进行相应代码的调试和修改提供指导。

作者简介

——张超盟
华为云应用服务网格架构师,拥有15年以上的开发经验,先后负责过华为云容器应用运维、微服务平台、云服务目录、云服务可靠性、服务网格等云原生产品的架构设计与开发工作,主导过多个重大项目的云原生和微服务化生产落地。在服务网格、Kubernetes容器服务、微服务架构、应用性能管理、大数据、DevOps工具等方面有深入的研究与实践。Istio社区成员,KubeCon、IstioCon及ServiceMeshCon等会议的演讲者,技术图书作者。早期曾在中铁一局从事路桥建设工作。

——徐中虎
华为云云原生团队核心成员,开源技术专家,服务网格Istio核心维护者,Istio社区指导委员会成员,Kubernetes项目核心贡献者,批量计算项目Volcano的核心维护者,拥有丰富的开源工作经验。主要研究方向有微服务架构、服务网格、容器编排平台Kubernetes和未来的分布式云原生架构等。在分布式系统的性能优化、高可靠和可扩展方面研究深入、经验丰富。——张超盟
华为云应用服务网格架构师,拥有15年以上的开发经验,先后负责过华为云容器应用运维、微服务平台、云服务目录、云服务可靠性、服务网格等云原生产品的架构设计与开发工作,主导过多个重大项目的云原生和微服务化生产落地。在服务网格、Kubernetes容器服务、微服务架构、应用性能管理、大数据、DevOps工具等方面有深入的研究与实践。Istio社区成员,KubeCon、IstioCon及ServiceMeshCon等会议的演讲者,技术图书作者。早期曾在中铁一局从事路桥建设工作。

——徐中虎
华为云云原生团队核心成员,开源技术专家,服务网格Istio核心维护者,Istio社区指导委员会成员,Kubernetes项目核心贡献者,批量计算项目Volcano的核心维护者,拥有丰富的开源工作经验。主要研究方向有微服务架构、服务网格、容器编排平台Kubernetes和未来的分布式云原生架构等。在分布式系统的性能优化、高可靠和可扩展方面研究深入、经验丰富。

——张 伟
华为云服务网格数据面资深专家,拥有18年架构设计与开发经验,先后就职于亿阳信通、加拿大北电网络(中国)、甲骨文、Polycom、阿里巴巴及华为等公司。作为核心开发人员开发过传输网管系统、Tuxedo交易中间件、ts-server多媒体转码服务、GTS高性能事务云服务、sc高性能注册中心、ASM数据面等多个产品,现主要负责华为云ASM服务网格数据面代理产品的设计与开发工作。

——冷 雪
西安电子科技大学杭州研究院菁英副教授,浙江大学工学博士。主要研究方向有云原生安全、性能优化和智能运维等,致力于解决云网环境下的关键问题。曾参与并主持多项科研项目,在国际会议和期刊上发表多篇论文并获得多项授权专利。

/ 华为云云原生团队 /
华为云云原生团队创建于2013年,是国内较早从事云原生研究的团队之一,也是CNCF的初创成员和白金会员。华为云在容器、服务网格、微服务等云原生技术领域都有着深厚的沉淀,拥有10多名CNCF项目维护者,对Kubernetes、Istio等核心项目的贡献一直位居全球前列,并向CNCF捐献了KubeEdge、Volcano、Karmada等知名项目。基于CNCF的开源生态,华为云还打造了云容器引擎、云容器实例、应用服务网格等一系列优质的商业化云原生服务。
为进一步推广云原生技术,加速云原生在行业中落地,华为云联合CNCF、中国信通院及业界云原生技术精英们成立了全球云原生交流平台——创原会。

/ 创原会 /
创原会是CNCF、中国信通院、华为云及业界云原生技术精英们联合成立的全球云原生交流平台,旨在通过研究前沿云原生技术及共享产业落地实践,探索云原生与业务融合的无限可能。自2020年成立至今,创原会已在中国、东南亚、拉美、欧洲陆续成立分会并举办活动50余场,为全球技术精英们提供了一个优质、高端、开放的交流平台,并吸纳近300位CTO、技术总监成为会员,极大地促进了云原生在全球各行业中的普及和落地。

相关资料

》大咖倾情作序《

——CNCF CTO Chris Aniszczyk
本书提供了全面且实用的Istio指南,涵盖了Istio的核心概念、特性和对xDS协议等主题的深入探讨,还包括对Envoy和Istio项目源码的深入解析,这对潜在贡献者非常有用。无论您是软件工程师、SRE还是云原生开发人员,本书都将为您提供利用Envoy和Istio构建可扩展和安全的云原生应用所需的知识和技能。

——华为云CTO 张宇昕
《Istio权威指南》来源于华为云云原生团队在云服务开发、客户解决方案构建、Istio社区特性开发、生产环境运维等日常工作中的实践、思考和总结,旨在帮助技术圈的更多朋友由浅入深且系统地理解Istio的原理、实践、架构与源码。书中内容在描述Istio的功能和机制的同时,运用了大量的图表总结,并深入解析其中的概念和技术点,可以帮助读者从多个维度理解云原生、服务网格等相关技术,掌握基于Istio实现应用流量管理、零信任安全、应用可观测性等能力的相关实践。无论是初学者,还是对服务网格有一定了解的用户,都可以通过本书获取自己需要的信息。

》众咖联袂推荐《

——中国信通院云计算与大数据研究所所长 何宝宏
服务网格作为一种管理服务间通信的核心技术,为服务间的调用带来了便捷且可靠的流量、安全和可观测性等能力。中国信通院作为ICT领域的国家智库,率先牵头制定了服务网格相关标准。华为作为云原生领域的中坚力量,在该标准的编写过程中发挥了重要作用。《Istio权威指南》作为关于服务网格的专业技术书籍,对国内云原生技术的普及和发展将起到极大的促进作用。

——上海交通大学致远讲席教授、国家杰青、IEEE/CCF Fellow 过敏意
云原生技术已经成为产业界和学术界共同关注的热点之一。Istio作为一种集成了流量、安全和可观测性等能力的透明服务治理平台,有效推动了服务网格在云生产环境下的应用和普及。《Istio权威指南》作为服务网格领域的权威书籍,凝聚了华为云云原生团队长期积累的丰富经验,深入浅出地对Istio相关技术进行了详尽解读,值得相关从业者、技术爱好者和学术研究者阅读、参考。

——CNCF中国区总监、Linux Foundation亚太区战略总监 Keith Chan
Istio一直是云原生领域非常流行的开源项目,是CNCF组织的各类会议上的热门话题。华为一直是云原生开源活动的积极参与者,在Kubernetes和Istio等项目中都有着突出的贡献。《Istio权威指南》由华为云云原生团队倾力打造而成,其理论结合实践,深度剖析了Istio的原理、实践、架构与源码,对于企业面向云原生架构转型及践行服务网格落地都有很大的参考意义。

——华为云首席产品官 方国伟
云原生极大地提高了企业应用生产力,缩短了应用的上市时间,降低了应用上云的门槛。服务网格作为云原生技术栈中的关键技术之一,可以帮助用户打造“以应用为中心”的云原生基础设施。《Istio权威指南》作为系统介绍服务网格技术Istio的权威书籍,来源于在Istio社区及产品领域耕耘多年的华为云云原生团队的长期工程实践和宝贵经验积累,值得广大云原生技术爱好者阅读、参考。

——Istio TOC Member、Director of Open Source at Solo.io Lin Sun
Istio是当今生产环境下非常流行、部署非常广泛的服务网格技术。如果您已经了解Istio并想从基本概念、API、架构、各组件的源码等方面深入研究Istio,那么《Istio权威指南》适合您阅读。本书是非常实用且有深度的Istio书籍,其涵盖的Istio组件工作流和图表的深度给我留下了特别深刻的印象。希望您喜欢本书,我代表Istio社区祝您学习Istio愉快!

——Istio TOC Member、Istio SC Member、Google Staff Engineer John Howard
加入CNCF,标志着Istio向服务网格的事实标准迈出了关键的一步。《Istio权威指南》由来自Istio指导委员会、Istio社区等的Istio资深开发人员编写而成,是非常全面、深入地讲解Istio技术的权威书籍,内容涵盖Istio的原理、实践、架构与源码。无论您是初学者、云原生技术专家,还是Istio社区的贡献者,都可以从中获益。

——Envoy与Istio核心维护者、Tetrate.io前创始工程师 周礼赞
《Istio权威指南(上)》讲解了Istio的原理、各种使用场景和优秀实践,《Istio权威指南(下)》讲解了Istio控制面和数据面Envoy的内部架构及源码实现。这两本书深入剖析了Istio的内部架构,可以帮助您更充分地理解Istio的工作原理和实现,从而更好地应用Istio并进行Istio调优。

本书特色

(1)华为云CTO张宇昕、CNCF CTO Chris Aniszczyk联合作序,倾力推荐。
(2)本书和本书上册基于Istio版本和架构,通过26章近1000页,全面、系统、详细、深入地解析Istio原理、用法、实践、架构和源码。Istio 社区资深、权威的两位TOC委员 Lin Sun和John Howard代表Istio社区指导和推荐。
(3)中国信通院云计算与大数据研究所何宝宏所长、上海交通大学致远讲席教授IEEE/CCF Fellow过敏意老师、CNCF中国区总监Keith Chan、华为云首席产品官方国伟强力推荐。
(4)Istio社区亚洲的从首届连任至今的指导委员会成员、国内早的Istio商用云服务开发团队成员联合出品,打造国内权威、系统的Istio书籍。
(5)本书为国内首本系统详细解析Envoy架构和源码的技术书籍,Istio和Envoy社区核心维护者周礼赞强力推荐。
(6)本书和本书上册运用450 原创图表多维度洞察、归纳、总结Istio原理、架构、流程和易错技术要点。图表等内容细节获Istio TOC Director of Open Source at Solo.io Lin Sun赞誉和推荐。
(7)内容源于华为云云原生团队在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

下载地址

立即下载

(解压密码:www.teccses.org)

Article Title:《ISTIO权威指南(下):云原生服务网格ISTIO架构与源码》
Article link:https://www.teccses.org/1463383.html