华为云原生技术丛书云原生服务网格ISTIO:原理.实践.架构与源码解析

相关资料

[

以容器、微服务、DevOps等为代表的云原生技术,具有灵活、敏捷和快速响应等特点,能够帮助企业构建更加适用于云的应用服务,也在引领云计算发展的新风向。华为作为云原生领域的优秀实践代表,在中国信息通信研究院组织发布的《云原生技术实践白皮书》编写和云原生产业联盟中都起着重要的作用。华为云原生技术丛书,会对云原生技术进行全面介绍,相信也会大大促进国内云原生技术的普及和发展。
——中国信息通信研究院云计算与大数据研究所所长 何宝宏

Istio是云原生领域非常流行的开源项目,近年来在CNCF所组织的各类会议上一直是很热门的讨论话题。华为一直是云原生开源活动的积极参与者,在Kubernetes和Istio等项目中都有着突出的贡献。这本由华为云原生团队倾力打造的《云原生服务网格Istio:原理、实践、架构与源码解析》理论结合实践,系统介绍了云原生、服务网格及微服务之间的关系,深度剖析了Istio的原理与架构,并提供了详细的实施指南,对于企业面向云原生架构转型及践行服务网格落地都有很大的参考意义,值得一读。
——CNCF中国区总监、Linux基金会亚太地区战略规划总监 Keith Chan

近年来,新型开源云计算技术和社区蓬勃发展、影响巨大,创造了前所未有的包括容器、微服务、AI等技术在内的开源云原生态系统。各行各业的研究者们正在创造性地使用容器等云原生技术推动基础设施、微服务、边缘计算、AI等领域的发展。本书立足云原生技术前沿,系统阐述了Istio项目的技术原理和架构,深入剖析了Istio源码,且实践性强,相信无论是初学者还是相关技术人员,都能从中受益。
——浙江大学计算机软件研究所副所长、浙江大学互联网金融研究院副院长 杨小虎

云计算已经从以“资源”为中心的1.0时代演进到以“应用”为中心的2.0时代。随着企业应用的云化及智能化,云原生的基础设施与应用平台将成为云原生企业与有互联网业务诉求的中大型企业的必然选择。华为云原生技术团队在以容器、微服务、服务网格等技术为代表的开源社区及产品领域耕耘多年,本书包含了其对Istio开源项目从架构到源码的详尽解读,以及来自华为云一线实践的丰富经验积累,值得广大云原生技术爱好者阅读参考。
——华为云CTO 张宇昕

本书凝聚了华为云Istio开源社区主要贡献者及产品研发团队骨干的优秀设计开发经验及优秀应用实践积累,从宏观到微观,从理论到实践,对从Istio的原理、应用到技术架构再到*终的关键代码内幕,逐层递进、由浅入深地进行了解读与剖析,为各行各业构建敏捷、柔性、可扩展的云原生业务架构提供了不可多得的技术指导与参考,值得广大云计算从业人员及计划引入容器技术、微服务治理框架实现云原生软件演进的软件工程师与架构师认真研读。
——华为云首席架构师、华为Fellow 顾炯炯

四年前,当我作为CNCF的初创成员董事与来自Google、IBM、红帽等公司的其他董事讨论云原生的定义时,大家的观点很快就统一在了“面向微服务”“用容器封装”“进行动态编排”这几个要素上。云原生技术及其基础软件栈已从昔日的王谢堂前燕,转变为飞入寻常“企业”家,并将随着各行各业的业务云化得到更广泛的应用。服务网格与容器系列的技术一样,也是云原生技术栈的重要组成部分,Istio作为服务网格技术的代表,必将在企业与行业中得到广泛应用。很高兴在这样的背景下看到这本书,它由华为云多位资深专家撰写,深入浅出、案例详尽,相信一定会对希望了解本领域技术与实操的开发人员、运维人员有所帮助。
——华为开源软件与系统首席架构师、Linux基金会&CNCF董事
侯培新

]

本书特色

[

本书分为原理篇、实践篇、架构篇和源码篇,由浅入深地将Istio项目庖丁解牛并呈现给读者。原理篇介绍了服务网格技术与Istio项目的技术背景、设计理念与功能原理,能够帮助读者了解服务网格这一云原生领域的标志性技术,掌握Istio流量治理、策略与遥测和安全功能的使用方法。实践篇从零开始搭建Istio运行环境并完成一个真实应用的开发、交付、上线监控与治理的完整过程,能够帮助读者熟悉Istio的功能并加深对Istio的理解。架构篇剖析了Istio项目的三大核心子项目Pilot、Mixer、Citadel的详细架构,帮助读者熟悉Envoy、Galley、Pilot-agent等相关项目,并挖掘Istio代码背后的设计与实现思想。源码篇对Istio各个项目的代码结构、文件组织、核心流程、主要数据结构及各主要代码片段等关键内容都进行了详细介绍,读者只需具备一定的Go语言基础,便可快速掌握Istio各部分的实现原理,并根据自己的兴趣深入了解某一关键机制的完整实现。本书提供源码下载,参见http://github.com/cloudnativebooks/cloud-native-istio。无论是对于刚入门Istio的读者,还是对于已经在产品中使用Istio的读者,本书都极具参考价值。

]

内容简介

[

本书分为原理篇、实践篇、架构篇和源码篇,由浅入深地将Istio项目庖丁解牛并呈现给读者。原理篇介绍了服务网格技术与Istio项目的技术背景、设计理念与功能原理,能够帮助读者了解服务网格这一云原生领域的标志性技术,掌握Istio流量治理、策略与遥测和安全功能的使用方法。实践篇从零开始搭建Istio运行环境并完成一个真实应用的开发、交付、上线监控与治理的完整过程,能够帮助读者熟悉Istio的功能并加深对Istio的理解。架构篇剖析了Istio项目的三大核心子项目Pilot、Mixer、Citadel的详细架构,帮助读者熟悉Envoy、Galley、Pilot-agent等相关项目,并挖掘Istio代码背后的设计与实现思想。源码篇对Istio各个项目的代码结构、文件组织、核心流程、主要数据结构及各主要代码片段等关键内容都进行了详细介绍,读者只需具备一定的Go语言基础,便可快速掌握Istio各部分的实现原理,并根据自己的兴趣深入了解某一关键机制的完整实现。本书提供源码下载,参见http://github.com/cloudnativebooks/cloud-native-istio。无论是对于刚入门Istio的读者,还是对于已经在产品中使用Istio的读者,本书都极具参考价值。

]

作者简介

[

张超盟
华为云应用服务网格首席架构师,拥有10年以上软件研发经验,先后负责华为云PaaS容器应用运维、微服务平台、云服务目录、服务网格等产品架构设计与开发工作,在容器服务、微服务架构、大数据、应用性能管理、数据库中间件及DevOps工具等多个领域有深入的研究与实践。开源爱好者,Istio社区成员。曾就职于TrendMicro和中铁一局。

章鑫
华为云应用服务网格首席系统工程师, 拥有10年以上IT从业经验,先后参与华为云PaaS运维平台、容器自动化运维工 具、服务网格等产品设计与开发,主导了多个服务网格项目的落地与实施工作。Istio社区成员,对于Pilot、Mixer等多个组件 的 调 优 有 丰 富 的 经 验。曾 在VIA-Telecom和Nokia担任研发专家。

徐中虎张超盟
华为云应用服务网格首席架构师,拥有10年以上软件研发经验,先后负责华为云PaaS容器应用运维、微服务平台、云服务目录、服务网格等产品架构设计与开发工作,在容器服务、微服务架构、大数据、应用性能管理、数据库中间件及DevOps工具等多个领域有深入的研究与实践。开源爱好者,Istio社区成员。曾就职于Trend
Micro和中铁一局。

章鑫
华为云应用服务网格首席系统工程师, 拥有10年以上IT从业经验,先后参与华为云PaaS运维平台、容器自动化运维工 具、服务网格等产品设计与开发,主导了多个服务网格项目的落地与实施工作。Istio社区成员,对于Pilot、Mixer等多个组
件 的 调 优 有 丰 富 的 经 验。曾 在VIA-Telecom和Nokia担任研发专家。

徐中虎
华为云原生开源团队核心成员,Istio社区Approver,Kubernetes项目核心贡献者,现 聚 焦 于Cloud Native、Docker、Kubernetes、Service Mesh等领域,对分布式系统性能优化、高可靠、可扩展等有深入的研究。曾就职于网易、Nokia。

徐飞
华为云原生开源团队核心成员,Istio社区Approver,Kubernetes、Federation、Kubeflow、Virtual-Kubelet社区项目成员及核心贡献者,浙江大学硕士。从2015年开始参与容器平台的设计与开发,并参与上游社区的贡献。

华为云原生团队
华为云原生团队创建于2013年,是国内较早参与云原生这一技术领域的团队之一。作为CNCF(云原生计算基金会)的初创成员和白金会员,华为在容器、服务网格、微服务等云原生技术领域都有着深厚的造诣,拥有10多名CNCF开源项目维护者,在Kubernetes、Istio等核心开源项目上的贡献位居全球前列。华为云也提供了基于CNCF开源项目所打造的商业化云原生系列产品,包括云容器引擎、云容器实例、应用服务网格、容器交付流水线等。
华为云原生团队致力于云原生技术在国内的普及与推广,通过“容器魔方”官方微信公众号,以及与CNCF联合打造的Cloud
Native Days China(CNDC)Meetup、Cloud Native Lives云原生技术在线直播、线下CKA培训等活动,推动了国内云原生技术的学习与交流热潮。此次打造的华为云原生技术丛书,内容涵盖以CNCF项目为主的多个云原生技术热点,可为广大云原生技术爱好者提供详尽、专业、及时的原理讲解与技术剖析。

]

目录

原 理 篇

第1章 你好,Istio. 2
1.1 Istio是什么… 2
1.2 通过示例看看Istio能做什么… 4
1.3 Istio与服务治理… 6
1.3.1 关于微服务… 6
1.3.2 服务治理的三种形态… 8
1.3.3 Istio不只解决了微服务问题… 10
1.4 Istio与服务网格… 11
1.4.1 时代选择服务网格… 11
1.4.2 服务网格选择Istio. 14
1.5 Istio与Kubernetes 15
1.5.1 Istio,Kubernetes的好帮手… 16
1.5.2 Kubernetes,Istio的好基座… 18
1.6 本章总结… 20
第2章 Istio架构概述… 21
2.1 Istio的工作机制… 21
2.2 Istio的服务模型… 23
2.2.1 Istio的服务… 24
2.2.2 Istio的服务版本… 26
2.2.3 Istio的服务实例… 28
2.3 Istio的主要组件… 30
2.3.1 istio-pilot 30
2.3.2 istio-telemetry. 32
2.3.3 istio-policy. 33
2.3.4 istio-citadel 34
2.3.5 istio-galley. 34
2.3.6 istio-sidecar-injector 35
2.3.7 istio-proxy. 35
2.3.8 istio-ingressgateway. 36
2.3.9 其他组件… 37
2.4 本章总结… 37
第3章 非侵入的流量治理… 38
3.1 Istio流量治理的原理… 38
3.1.1 负载均衡… 39
3.1.2 服务熔断… 41
3.1.3 故障注入… 48
3.1.4 灰度发布… 49
3.1.5 服务访问入口… 54
3.1.6 外部接入服务治理… 56
3.2 Istio路由规则配置:VirtualService. 59
3.2.1 路由规则配置示例… 59
3.2.2 路由规则定义… 60
3.2.3 HTTP路由(HTTPRoute)… 63
3.2.4 TLS路由(TLSRoute)… 78
3.2.5 TCP路由(TCPRoute)… 81
3.2.6 三种协议路由规则的对比… 83
3.2.7 VirtualService的典型应用… 84
3.3 Istio目标规则配置:DestinationRule. 89
3.3.1 DestinationRule配置示例… 90
3.3.2 DestinationRule规则定义… 90
3.3.3 DestinationRule的典型应用…. 103
3.4 Istio服务网关配置:Gateway. 107
3.4.1 Gateway配置示例… 108
3.4.2 Gateway规则定义… 109
3.4.3 Gateway的典型应用… 112
3.5 Istio外部服务配置:ServiceEntry. 120
3.5.1 ServiceEntry配置示例… 120
3.5.2 ServiceEntry规则的定义和用法… 121
3.5.3 ServiceEntry的典型应用… 123
3.6 Istio代理规则配置:Sidecar 126
3.6.1 Sidecar配置示例… 126
3.6.2 Sidecar规则定义… 126
3.7 本章总结… 129
第4章 可扩展的策略和遥测… 131
4.1 Istio策略和遥测的原理… 131
4.1.1 应用场景… 131
4.1.2 工作原理… 136
4.1.3 属性… 137
4.1.4 Mixer的配置模型… 140
4.2 Istio遥测适配器配置… 147
4.2.1 Prometheus适配器… 148
4.2.2 Fluentd适配器… 155
4.2.3 StatsD适配器… 159
4.2.4 Stdio适配器… 161
4.2.5 Zipkin适配器… 163
4.2.6 厂商适配器… 168
4.3 Istio策略适配器配置… 169
4.3.1 List适配器… 169
4.3.2 Denier适配器… 171
4.3.3 Memory Quota适配器… 172
4.3.4 Redis Quota适配器…. 175
4.4 Kubernetes Env适配器配置… 178
4.5 本章总结… 181
第5章 可插拔的服务安全… 182
5.1 Istio服务安全的原理… 182
5.1.1 认证… 185
5.1.2 授权… 189
5.1.3 密钥证书管理… 192
5.2 Istio服务认证配置… 193
5.2.1 认证策略配置示例… 193
5.2.2 认证策略的定义… 194
5.2.3 TLS访问配置… 196
5.2.4 认证策略的典型应用… 200
5.3 Istio服务授权配置… 202
5.3.1 授权启用配置… 202
5.3.2 授权策略配置… 203
5.3.3 授权策略的典型应用… 207
5.4 本章总结… 210
第6章 透明的Sidecar机制… 211
6.1 Sidecar注入… 211
6.1.1 Sidecar Injector自动注入的原理… 214
6.1.2 Sidecar注入的实现… 216
6.2 Sidecar流量拦截… 219
6.2.1 iptables的基本原理… 220
6.2.2 iptables的规则设置… 223
6.2.3 流量拦截原理… 224
6.3 本章总结… 228
第7章 多集群服务治理… 230
7.1 Istio多集群服务治理… 230
7.1.1 Istio多集群的相关概念… 230
7.1.2 Istio多集群服务治理现状… 231
7.2 多集群模式1:多控制面… 232
7.2.1 服务DNS解析的原理… 233
7.2.2 Gateway连接的原理… 237
7.3 多集群模式2:VPN直连单控制面… 238
7.4 多集群模式3:集群感知服务路由单控制面… 240
7.5 本章总结… 246

实 践 篇

第8章 环境准备… 248
8.1 在本地搭建Istio环境… 248
8.1.1 安装Kubernetes集群… 248
8.1.2 安装Helm.. 249
8.1.3 安装Istio. 250
8.2 在公有云上使用Istio. 253
8.3 尝鲜Istio命令行… 255
8.4 应用示例… 257
8.4.1 Weather Forecast简介… 257
8.4.2 Weather Forecast部署… 258
8.5 本章总结… 259
第9章 流量监控… 260
9.1 预先准备:安装插件… 260
9.2 调用链跟踪… 261
9.3 指标监控… 265
9.3.1 Prometheus. 265
9.3.2 Grafana. 268
9.4 服务网格监控… 273
9.5 本章总结… 277
第10章 灰度发布… 278
10.1 预先准备:将所有流量都路由到各个服务的v1版本… 278
10.2 基于流量比例的路由… 279
10.3 基于请求内容的路由… 283
10.4 组合条件路由… 284
10.5 多服务灰度发布… 286
10.6 TCP服务灰度发布… 288
10.7 自动化灰度发布… 290
10.7.1 正常发布… 291
10.7.2 异常发布… 294
第11章 流量治理… 296
11.1 流量负载均衡… 296
11.1.1 ROUND_ROBIN模式… 296
11.1.2 RANDOM模式… 298
11.2 会话保持… 299
11.2.1 实战目标… 300
11.2.2 实战演练… 300
11.3 故障注入… 301
11.3.1 延迟注入… 301
11.3.2 中断注入… 303
11.4 超时… 304
11.5 重试… 306
11.6 HTTP重定向… 308
11.7 HTTP重写… 309
11.8 熔断… 310
11.9 限流… 313
11.9.1 普通方式… 314
11.9.2 条件方式…. 315
11.10 服务隔离… 317
11.10.1 实战目标… 317
11.10.2 实战演练… 317
11.11 影子测试… 319
11.12 本章总结… 322
第12章 服务保护… 323
12.1 网关加密… 323
12.1.1 单向TLS网关… 323
12.1.2 双向TLS网关… 326
12.1.3 用SDS加密网关… 328
12.2 访问控制… 331
12.2.1 黑名单… 331
12.2.2 白名单… 332
12.3 认证… 334
12.3.1 实战目标… 334
12.3.2 实战演练… 334
12.4 授权… 336
12.4.1 命名空间级别的访问控制… 336
12.4.2 服务级别的访问控制… 339
12.5 本章总结… 341
第13章 多集群管理… 342
13.1 实战目标… 342
13.2 实战演练… 342
13.3 本章总结… 350

架 构 篇

第14章 司令官Pilot 352
14.1 Pilot的架构… 352
14.1.1 Istio的服务模型… 354
14.1.2 xDS协议… 356
14.2 Pilot的工作流程… 360
14.2.1 Pilot的启动与初始化… 361
14.2.2 服务发现… 363
14.2.3 配置规则发现… 368
14.2.4 Envoy的配置分发… 376
14.3 Pilot的插件… 383
14.3.1 安全插件… 385
14.3.2 健康检查插件… 390
14.3.3 Mixer插件… 391
14.4 Pilot的设计亮点… 392
14.4.1 三级缓存优化… 392
14.4.2 去抖动分发… 393
14.4.3 增量EDS. 394
14.4.4 资源隔离… 395
14.5 本章总结… 396
第15章 守护神Mixer 397
15.1 Mixer的整体架构… 397
15.2 Mixer的服务模型… 398
15.2.1 Template. 399
15.2.2 Adapter 401
15.3 Mixer的工作流程… 403
15.3.1 启动初始化… 403
15.3.2 用户配置信息规则处理… 409
15.3.3 访问策略的执行… 416
15.3.4 无侵入遥测… 421
15.4 Mixer的设计亮点… 423
15.5 如何开发Mixer
Adapter 424
15.5.1 Adapter实现概述… 424
15.5.2 内置式Adapter的开发步骤… 425
15.5.3 独立进程式Adapter的开发步骤… 430
15.5.4 独立仓库式Adapter的开发步骤… 437
15.6 本章总结… 438
第16章 安全碉堡Citadel 439
16.1 Citadel的架构… 439
16.2 Citadel的工作流程… 441
16.2.1 启动初始化… 441
16.2.2 证书控制器… 442
16.2.3 gRPC服务器… 444
16.2.4 证书轮换器… 445
16.2.5 SDS服务器… 446
16.3 本章总结… 449
第17章 高性能代理Envoy. 450
17.1 Envoy的架构… 450
17.2 Envoy的特性… 451
17.3 Envoy的模块结构… 452
17.4 Envoy的线程模型… 453
17.5 Envoy的内存管理… 455
17.5.1 变量管理… 455
17.5.2 Buffer管理… 456
17.6 Envoy的流量控制… 456
17.7 Envoy与Istio的配合… 457
17.7.1 部署与交互… 457
17.7.2 Envoy API 458
17.3 本章总结… 459
第18章 代理守护进程Pilot-agent 460
18.1 为什么需要Pilot-agent 461
18.2 Pilot-agent的工作流程… 461
18.2.1 Envoy的启动… 462
18.2.2 Envoy的热重启… 465
18.2.3 守护Envoy. 466
18.2.4 优雅退出… 467
18.3 本章总结… 468
第19章 配置中心Galley. 469
19.1 Galley的架构… 469
19.1.1 MCP. 470
19.1.2 MCP API 470
19.2 Galley的工作流程… 471
19.2.1 启动初始化… 471
19.2.2 配置校验… 476
19.2.3 配置聚合与分发… 479
19.3 本章总结… 482

源 码 篇

第20章 Pilot源码解析… 484
20.1 进程启动流程… 484
20.2 关键代码分析… 486
20.2.1 ConfigController 486
20.2.2 ServiceController 490
20.2.3 xDS异步分发… 495
20.2.4 配置更新预处理… 503
20.2.5 xDS配置的生成及分发… 509
20.3 本章总结… 514

第21章 Mixer源码解析… 515
21.1 进程启动流程… 515
21.1.1 runServer通过newServer新建Server对象… 517
21.1.2 启动Mixer gRPC Server 520
21.2 关键代码分析… 520
21.2.1 监听用户的配置… 520
21.2.2 构建数据模型… 524
21.2.3 Check接口… 533
21.2.4 Report接口… 536
21.2.5 请求分发… 539
21.2.6 协程池… 541
21.3 本章总结… 543
第22章 Citadel源码解析… 544
22.1 进程启动流程… 544
22.2 关键代码分析… 548
22.2.1 证书签发实体IstioCA.. 548
22.2.2 SecretController的创建和核心原理… 551
22.2.3 CA Server的创建和核心原理… 556
22.3 本章总结… 558
第23章 Envoy源码解析… 559
23.1 Envoy的初始化… 559
23.1.1 启动参数bootstrap的初始化… 559
23.1.2 Admin API的初始化… 560
23.1.3 Worker的初始化… 562
23.1.4 CDS的初始化… 562
23.1.5 LDS的初始化… 563
23.1.6 GuardDog的初始化… 564
23.2 Envoy的运行和建立新连接… 564
23.2.1 启动worker 565
23.2.2 Listener的加载… 565
23.2.3 接收连接… 566
23.3 Envoy对数据的读取、接收及处理… 567
23.3.1 读取数据… 568
23.3.2 接收数据… 568
23.3.3 处理数据… 569
23.4 Envoy发送数据到服务端… 570
23.4.1 匹配路由… 571
23.4.2 获取连接池… 572
23.4.3 选择上游主机… 572
23.5 本章总结… 573
第24章 Galley源码解析… 574
24.1 进程启动流程… 574
24.1.1 RunServer的启动流程… 577
24.1.2 RunValidation Server的启动流程… 578
24.2 关键代码分析… 580
24.2.1 配置校验… 580
24.2.2 配置监听… 584
24.2.3 配置分发… 585
24.3 本章总结… 589
结语… 590
附录A 源码仓库介绍… 592
附录B 实践经验和总结… 598

封面

华为云原生技术丛书云原生服务网格ISTIO:原理.实践.架构与源码解析

书名:华为云原生技术丛书云原生服务网格ISTIO:原理.实践.架构与源码解析

作者:张超盟 等

页数:628

定价:¥139.0

出版社:电子工业出版社

出版日期:2019-06-01

ISBN:9787121366536

PDF电子书大小:151MB 高清扫描完整版

百度云下载:http://www.chendianrong.com/pdf

发表评论

邮箱地址不会被公开。 必填项已用*标注