(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社区及产品领域耕耘多年的长期工程实践、客户实际案例的宝贵经验积累。适用于云原生初学者、技术爱好者、资深设计和开发人员、社区贡献者等多层次和领域的读者。
推荐序一
——华为云CTO 张宇昕
随着企业数字化转型的全面深入,企业在生产、运营、创新方面都对基础设施提出了全新要求。为了保障业务的极致性能,资源需要被随时随地按需获取;为了实现对成本的精细化运营,需要实现对资源的细粒度管理;新兴的智能业务则要求基础设施能提供海量的多样化算力。为了支撑企业的数智升级,企业的基础设施需要不断进化、创新。如今,企业逐步进入深度云化时代,由关注资源上云转向关注云上业务创新,同时需要通过安全、运维、IT治理、成本等精益运营手段来深度用云、高效管云。云原生解决了企业以高效协同模式创新的本质问题,让企业的软件架构可以去模块化、标准化部署,极大提高了企业应用生产力。
从技术发展的角度来看,我们可以把云原生理解为云计算的重心从“资源”逐渐转向“应用”的必然结果。以资源为中心的上一代云计算技术专注于物理设备如何虚拟化、池化、多租化,典型代表是计算、网络、存储三大基础设施的云化。以应用为中心的云原生技术则专注于应用如何更好地适应云环境。相对于传统应用通过迁移改造“上云”,云原生的目标是通过一系列的技术支撑,使用户在云环境下快速开发和运行、管理云原生应用,并更好地利用云资源和云技术。
服务网格是CNCF(Cloud-Native Computing Foundation,云原生计算基金会)定义的云原生技术栈中的关键技术之一,和容器、微服务、不可变基础设施、声明式API等技术一起,帮助用户在动态环境下以弹性和分布式的方式构建并运行可扩展的应用。服务网格在云原生技术栈中,向上连接用户应用,向下连接多种计算资源,发挥着关键作用。
(1)服务网格与底层资源、运行环境结合,构建了一个理解应用需求、对应用更友好的基础设施,而不只是提供一堆机器和资源。服务网格帮助用户打造“以应用为中心”的云原生基础设施,让基础设施能感知应用且更好地服务于应用,对应用进行细粒度管理,更有效地发挥资源的效能。服务网格向应用提供的这层基础设施也经常被称为“应用网络”。用户开发的应用程序像使用传统的网络协议栈一样使用服务网格提供的应用层协议。就像TCP/IP负责将字节码可靠地在网络节点间传递,服务网格负责将用户的应用层信息可靠地在服务间传递,并对服务间的访问进行管理。在实践中,包括华为云在内的越来越多的云厂商将七层应用流量管理能力和底层网络融合,在提供传统的底层连通性能力的同时,基于服务的语义模型,提供了应用层丰富的流量、安全和可观测性管理能力。
(2)向上,服务网格以非侵入的方式提供面向应用的韧性、安全、动态路由、调用链、拓扑等应用管理和运维能力。这些能力在传统应用开发模式下,需要在开发阶段由开发人员开发并持续维护。而在云原生开发模式下,基于服务网格的非侵入性特点,这些能力被从业务中解耦,无须由开发人员开发,由运维人员配置即可。这些能力包括:灵活的灰度分流;超时、重试、限流、熔断等;动态地对服务访问进行重写、重定向、头域修改、故障注入;自动收集应用访问的指标、访问日志、调用链等可观测性数据,进行故障定界、定位和洞察;自动提供完整的面向应用的零信任安全,比如自动进行服务身份认证、通道加密和细粒度授权管理。使用这些能力时,无须改动用户的代码,也无须使用基于特定语言的开发框架。
作为服务网格技术中最具影响力的项目,Istio的平台化设计和良好扩展性使得其从诞生之初就获得了技术圈和产业界的极大关注。基于用户应用Istio时遇到的问题,Istio的版本在稳定迭代,功能在日益完善,易用性和运维能力在逐步增强,在大规模生产环境下的应用也越来越多。特别是,Istio于2022年9月被正式批准加入CNCF,作为在生产环境下使用最多的服务网格项目,Istio在加速成熟。
华为云在2018年率先发布全球首个Istio商用服务:ASM(Application Service Mesh,应用服务网格)。ASM是一个拥有高性能、高可靠性和易用性的全托管服务网格。作为分布式云场景中面向应用的网络基础,ASM对多云、混合云环境下的容器、虚拟机、Serverless、传统微服务、Proxyless服务提供了应用健康、韧性、弹性、安全性等统一的全方位管理。
作为最早一批投身云原生技术的厂商,华为云是CNCF在亚洲唯一的初创成员,社区代码贡献和Maintainer席位数均持续位居亚洲第一。华为云云原生团队从2018年开始积极参与Istio社区的活动,参与Istio社区的版本特性设计与开发,基于用户的共性需求开发了大量大颗粒特性,社区贡献位居全球第三、中国第一。华为云云原生团队成员入选了每届Istio社区指导委员会,参与了Istio社区的重大技术决策,持续引领了Istio项目和服务网格技术的发展。
2021年4月,华为云联合中国信通院正式发布云原生2.0白皮书,全面诠释了云原生2.0的核心理念,分享了云原生产业洞察,引领了云原生产业的繁荣。此外,华为云联合CNCF、中国信通院及业界云原生技术精英们成立全球云原生交流平台——创原会,创原会当前已经在中国、东南亚、拉美、欧洲陆续成立分会,探索前沿云原生技术、共享产业落地实践经验,让云原生为数字经济发展和企业数字化转型贡献更多的价值。
《Istio权威指南》来源于华为云云原生团队在云服务开发、客户解决方案构建、Istio社区特性开发、生产环境运维等日常工作中的实践、思考和总结,旨在帮助技术圈的更多朋友由浅入深且系统地理解Istio的原理、实践、架构与源码。书中内容在描述Istio的功能和机制的同时,运用了大量的图表总结,并深入解析其中的概念和技术点,可以帮助读者从多个维度理解云原生、服务网格等相关技术,掌握基于Istio实现应用流量管理、零信任安全、应用可观测性等能力的相关实践。无论是初学者,还是对服务网格有一定了解的用户,都可以通过本书获取自己需要的信息。
推荐序二
——CNCF CTO Chris Aniszczyk
我很高兴向大家介绍这本关于Istio服务网格技术的权威书籍。Istio是一种创新性的平台,在云原生计算领域迅速赢得人们的广泛关注。企业在向微服务和容器化架构转型的过程中,对强大且可扩展的服务发现、流量管理及安全平台的需求变得比以往更加迫切。Istio在2022年9月正式被CNCF接受为孵化项目,并成为一种领先的解决方案,为云原生应用提供了无缝连接、可观察性和控制等能力。
本书提供了全面且实用的Istio指南,涵盖了Istio的核心概念、特性和对xDS协议等主题的深入探讨,还包括对Envoy和Istio项目源码的深入解析,这对潜在贡献者非常有用。无论您是软件工程师、SRE还是云原生开发人员,本书都将为您提供利用Envoy和Istio构建可扩展和安全的云原生应用所需的知识和技能。
我要祝贺作者们完成了杰出的工作,并感谢他们在云原生社区分享自己的专业知识。我相信本书将成为对Envoy、Istio及现代云原生应用开发感兴趣的人不可或缺的资源。
(原文)
I am thrilled to introduce this definitive book on Istio service mesh technology, a revolutionary platform that has been rapidly gaining popularity in the world of cloud-native computing. As businesses shift towards microservices and containerized architectures, the need for a robust and scalable platform for service discovery, traffic management, and security has become more critical than ever before. Istio was officially accepted in the CNCF as an incubation project in September 2022 and has emerged as a leading solution that provides seamless connectivity, observability, and control for cloud native applications.
This book provides a comprehensive and practical guide to Istio, covering its core concepts, features and deep dives into topics like the xDS protocol. It also includes a deep dive source code analysis of the Envoy and Istio projects which can be very useful to potential contributors. Whether you are a software engineer, an SRE or a cloud native developer, this book will provide you with the knowledge and skills which are necessary to leverage the power of Envoy and Istio to build scalable and secure cloud native applications.
I would like to congratulate the authors for their outstanding work and thank them for sharing their expertise with the wider cloud native community. I am confident that this book will be an invaluable resource for anyone interested in both Envoy and Istio and their roles in modern cloud native development.
原 理 篇
第1章 你好,Istio 2
1.1 Istio是什么 2
1.2 Istio能做什么 3
1.3 Istio与服务治理 5
1.3.1 关于微服务 5
1.3.2 服务治理的形态 7
1.3.3 Istio不只解决微服务问题 9
1.4 Istio与服务网格 11
1.4.1 云原生选择服务网格 11
1.4.2 服务网格选择Istio 14
1.5 Istio与Kubernetes 17
1.5.1 Istio,Kubernetes的好帮手 18
1.5.2 Kubernetes,Istio的好基座 20
1.6 本章小结 23
第2章 Istio的架构概述 25
2.1 Istio的架构及原理 25
2.2 Istio的服务模型 28
2.2.1 Istio的服务 29
2.2.2 Istio的服务版本 30
2.2.3 Istio的服务实例 32
2.3 Istio的主要组件 34
2.3.1 控制面的组件 34
2.3.2 数据面的组件 38
2.3.3 其他组件 43
2.4 本章小结 43
第3章 流量治理的原理 44
3.1 概念和原理 44
3.1.1 负载均衡 46
3.1.2 服务熔断 48
3.1.3 故障注入 54
3.1.4 灰度发布 55
3.1.5 故障转移 60
3.1.6 入口流量 63
3.1.7 出口流量 68
3.2 VirtualService(虚拟服务) 71
3.2.1 入门示例 71
3.2.2 配置模型 72
3.2.3 配置定义 73
3.2.4 HTTPRoute(HTTP路由) 75
3.2.5 TLSRoute(TLS路由) 89
3.2.6 TCPRoute(TCP路由) 91
3.2.7 三种协议的路由规则对比 92
3.2.8 典型应用 93
3.3 DestinationRule(目标规则) 101
3.3.1 入门示例 101
3.3.2 配置模型 101
3.3.3 配置定义 103
3.3.4 典型应用 116
3.4 Gateway(服务网关) 120
3.4.1 入门示例 120
3.4.2 配置模型 122
3.4.3 配置定义 122
3.4.4 典型应用 127
3.5 ServiceEntry(服务条目) 138
3.5.1 入门示例 139
3.5.2 配置模型 139
3.5.3 配置定义 140
3.5.4 典型应用 146
3.6 WorkloadEntry(工作负载) 149
3.6.1 入门示例 149
3.6.2 配置模型 150
3.6.3 配置定义 151
3.6.4 典型应用 152
3.7 WorkloadGroup(工作负载组) 154
3.7.1 入门示例 154
3.7.2 配置模型 154
3.7.3 配置定义 155
3.7.4 典型应用 156
3.8 Sidecar(服务网格代理) 157
3.8.1 入门示例 157
3.8.2 配置模型 158
3.8.3 配置定义 158
3.8.4 典型应用 161
3.9 EnvoyFilter(Envoy过滤器) 163
3.9.1 入门示例 164
3.9.2 配置模型 164
3.9.3 配置定义 165
3.9.4 典型应用 177
3.10 WasmPlugin(Wasm插件) 183
3.10.1 入门示例 183
3.10.2 配置模型 184
3.10.3 配置定义 184
3.10.4 典型应用 185
3.11 本章小结 186
第4章 可观测性和策略控制的原理 188
4.1 概念和原理 188
4.1.1 可观测性的概念 188
4.1.2 访问指标(Metrics) 194
4.1.3 调用链 198
4.1.4 访问日志 202
4.1.5 限流 205
4.2 Istio访问指标采集 207
4.2.1 指标采集的原理 208
4.2.2 指标采集的配置 211
4.3 Istio调用链采集 218
4.3.1 调用链采集的原理 218
4.3.2 调用链采集的配置 220
4.4 Istio中的访问日志采集 226
4.4.1 访问日志采集的原理 226
4.4.2 访问日志采集的配置 228
4.5 Istio限流 236
4.5.1 限流的原理 236
4.5.2 限流的配置 238
4.6 元数据交换 248
4.6.1 元数据交换的原理 249
4.6.2 元数据交换的配置 250
4.7 本章小结 252
第5章 服务安全的原理 255
5.1 概念和原理 255
5.1.1 对等身份认证 257
5.1.2 服务请求认证 263
5.1.3 服务访问授权 268
5.2 PeerAuthentication(对等身份认证) 273
5.2.1 入门示例 273
5.2.2 配置模型 274
5.2.3 配置定义 274
5.2.4 典型应用 275
5.3 RequestAuthentication(服务请求认证) 278
5.3.1 入门示例 278
5.3.2 配置模型 279
5.3.3 配置定义 279
5.3.4 典型应用 281
5.4 AuthorizationPolicy(服务授权策略) 283
5.4.1 入门示例 283
5.4.2 配置模型 284
5.4.3 配置定义 284
5.4.4 典型应用 288
5.5 本章小结 293
第6章 服务网格数据面代理Sidecar 294
6.1 Sidecar的透明注入原理 294
6.1.1 Sidecar的注入原理 294
6.1.2 自动注入服务 296
6.1.3 自动注入流程 298
6.2 Sidecar的流量拦截原理 301
6.2.1 iptables的基本原理 302
6.2.2 Sidecar Redirect模式 308
6.2.3 Sidecar Tproxy模式 317
6.2.4 Ingress网关模式 330
6.3 本章小结 334
第7章 异构基础设施 335
7.1 多集群服务治理的原理 335
7.1.1 Istio多集群相关的概念 335
7.1.2 Istio多集群管理 336
7.2 多集群的服务网格模型 337
7.2.1 扁平网络单控制面模型 337
7.2.2 非扁平网络单控制面模型 339
7.2.3 扁平网络多控制面模型 344
7.2.4 非扁平网络多控制面模型 346
7.3 多集群的关键技术 347
7.3.1 异构环境DNS 347
7.3.2 东西向网关 351
7.4 异构服务治理的原理 352
7.4.1 治理纯虚拟机服务 352
7.4.2 治理混合服务 354
7.5 本章小结 355
实 践 篇
第8章 环境准备 358
8.1 在本地搭建Istio环境 358
8.1.1 部署Kubernetes集群 358
8.1.2 安装Istio 359
8.2 尝鲜Istio命令行 361
8.3 应用示例 362
8.3.1 Weather Forecast简介 362
8.3.2 部署Weather Forecast 363
8.4 本章小结 364
第9章 可观测性实践 365
9.1 预先准备 365
9.2 调用链跟踪 366
9.3 指标监控 368
9.3.1 指标配置 369
9.3.2 指标采集:Prometheus 372
9.3.3 指标管理:Grafana 374
9.4 服务网格应用拓扑 379
9.5 访问日志 383
9.6 本章小结 384
第10章 灰度发布实践 385
10.1 预先准备 385
10.2 基于流量比例的路由 386
10.3 基于请求内容的路由 389
10.4 组合条件路由 391
10.5 多服务灰度发布 393
10.6 本章小结 395
第11章 流量治理实践 396
11.1 ROUND_ROBIN负载均衡 396
11.2 RANDOM负载均衡 397
11.3 地域负载均衡 399
11.3.1 基于权重的地域负载均衡 399
11.3.2 用于故障转移的地域负载均衡 402
11.4 会话保持 407
11.5 故障注入 409
11.5.1 延迟注入 409
11.5.2 中断注入 410
11.6 超时 411
11.7 重试 413
11.8 HTTP重定向 415
11.9 HTTP重写 416
11.10 熔断与连接池 417
11.11 熔断异常点检测 420
11.12 限流 423
11.12.1 全局限流 423
11.12.2 本地限流 426
11.13 服务隔离 429
11.14 流量镜像 431
11.15 本章小结 433
第12章 服务安全实践 434
12.1 双向认证 434
12.2 JWT认证 437
12.3 特定命名空间的访问授权 440
12.4 特定源地址的授权 442
12.5 本章小结 444
第13章 网关流量实践 445
13.1 入口网关 445
13.2 单向TLS网关 447
13.3 双向TLS网关 450
13.4 访问服务网格外部服务 452
13.5 出口网关 454
13.6 本章小结 456
第14章 异构基础设施实践 457
14.1 多集群灰度发布 457
14.2 多集群非扁平网络负载均衡 461
14.3 多集群非扁平网络故障转移 464
14.4 管理虚拟机应用 469
14.5 本章小结 472
附录A Istio访问日志的应答标记案例 473
温馨提示:请使用泸西县图书馆的读者帐号和密码进行登录