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

Istio权威指南:云原生服务网格Istio架构与源码(下)
作 者: 张超盟
出版社: 电子工业出版社
丛编项:
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: 暂缺
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

  ——张超盟华为云应用服务网格架构师,拥有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、中国信通院及业界云原生技术精英们成立...

内容简介

本书是《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章,与架构篇的6章对应,分别介绍Istio管理面组件Pilot、Citadel、Galley与数据面Pilot-agent、Envoy、Istio-proxy的主要代码结构、代码流程及关键代码片段。本篇配合架构篇中每个组件的架构和机制,对Istio重要组件的实现进行了更详细的讲解和剖析,为读者深入研读Istio相关代码,以及在生产环境下进行相应代码的调试和修改提供指导。 本书适合入门级读者从零开始了解Istio的架构,也适合有一定基础的读者深入研究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