新書推薦:
《
冯友兰和青年谈心系列:不是问题的问题(哲学大师冯友兰和年轻人谈心,命运解读)
》
售價:HK$
57.3
《
月与蟹(青鲤文库)荣获第144届直木奖,天才推理作家经典作品全新译本。一部青春狂想曲,带你登上心理悬疑之巅。
》
售價:HK$
51.8
《
索恩丛书·盛清统治下的太监与皇帝
》
售價:HK$
88.5
《
透过器物看历史(全6册)
》
售價:HK$
503.7
《
我在台北故宫博物院读名画
》
售價:HK$
112.7
《
尼罗河往事:古埃及文明4000年
》
售價:HK$
78.2
《
一个人·谁也不是·十万人(诺贝尔文学奖得主反思自我的巅峰之作)
》
售價:HK$
54.9
《
重写晚明史(全5册 精装)
》
售價:HK$
781.8
編輯推薦:
Istio是应用广泛的网格服务技术之一。它用于管理应用程序网络,可为微服务提供安全性和运营效率。本书逐层探索Istio,解释如何使用它来管理应用程序网络、弹性、可观察性和安全性。通过各种实践示例,读者将了解Istio Service Mesh的安装、架构及其各种组件,还将执行Istio的多集群安装,并将其集成部署在虚拟机的陈旧工作负载上。
內容簡介:
《Istio服务网格实例精解》详细阐述了与Istio服务网格相关的基本解决方案,主要包括服务网格简介、Istio入门、理解Istio控制平面和数据平面、管理应用程序流量、管理应用程序弹性、确保微服务通信的安全、服务网格可观察性、将Istio扩展到跨Kubernetes的多集群部署、扩展Istio数据平面、为非Kubernetes工作负载部署Istio服务网格、Istio故障排除和操作等内容。此外,本书还提供了相应的示例、代码,以帮助读者进一步理解相关方案的实现过程。
本书适合作为高等院校计算机及相关专业的教材和教学参考书,也可作为相关开发人员的自学用书和参考手册。
關於作者:
Anand Rai在为各种组织(包括技术提供商和消费企业)提供信息技术服务方面拥有18年以上的经验。他在这些组织中担任过各种行政和技术高级职务,但始终对技术采取亲身实践的态度。这段经历让他对信息技术的发展如何提高生产力和改善我们的日常生活有了全新的认识。他的专业涵盖应用程序集成、API管理、微服务架构、云、DevOps和Kubernetes。他喜欢解决问题、设想新的解决方案,并帮助组织利用技术来实现业务成果。
目錄 :
第1篇 基 础 知 识
第1章 服务网格简介 3
1.1 云计算基础知识 3
1.1.1 云计算的选项和分类 3
1.1.2 云计算的优势 6
1.2 了解微服务架构 8
1.3 了解Kubernetes 13
1.4 关于服务网格 16
1.4.1 使用服务网格的理由 16
1.4.2 Kubernetes实例解析 18
1.4.3 重试机制、断路、超时和截止时间 24
1.4.4 蓝/绿部署和金丝雀部署 25
1.5 小结 29
第2章 Istio入门 31
2.1 Istio简介 31
2.2 探索Istio的替代方案 32
2.2.1 Kuma 32
2.2.2 Linkerd 32
2.2.3 Consul 33
2.2.4 AWS App Mesh 33
2.2.5 OpenShift Service Mesh 33
2.2.6 F5 NGINX Service Mesh 34
2.3 准备工作站以安装Istio 34
2.3.1 系统和硬件需求 34
2.3.2 安装minikube和Kubernetes命令行工具 35
2.4 安装Istio 38
2.4.1 下载安装文件 38
2.4.2 查看安装包 39
2.4.3 使用istioctl执行安装 39
2.4.4 检查安装结果 40
2.4.5 为示例应用程序启用Istio 41
2.4.6 Sidecar注入 43
2.4.7 Istio网关 48
2.5 可观察性工具 53
2.5.1 kiali 54
2.5.2 Jaeger 56
2.5.3 Prometheus 57
2.5.4 Grafana 58
2.6 Istio架构 59
2.7 小结 60
第3章 理解Istio控制平面和数据平面 63
3.1 探索Istio控制平面的组件 63
3.1.1 istiod 64
3.1.2 Istio operator和istioctl 67
3.1.3 Istio agent 71
3.2 Istio控制平面的部署模型 72
3.2.1 具有本地控制平面的单个集群 73
3.2.2 具有单一控制平面的主集群和远程集群 74
3.2.3 具有外部控制平面的单个集群 75
3.3 Envoy探索 76
3.3.1 Envoy的显著特征 76
3.3.2 HTTP过滤器 79
3.3.3 侦听器过滤器 84
3.3.4 通过xDS API进行动态配置 85
3.3.5 可扩展性 87
3.4 小结 88
第2篇 Istio实战
第4章 管理应用程序流量 91
4.1 技术要求 91
4.1.1 设置环境 92
4.1.2 创建EKS集群 92
4.1.3 设置kubeconfig和kubectl 94
4.1.4 部署Sockshop应用程序 94
4.2 使用Kubernetes Ingress资源管理入口流量 95
4.2.1 了解Kubernetes Ingress资源管理机制 95
4.2.2 使用Istio网关控制器处理Ingress资源 98
4.2.3 添加Ingress规则 100
4.3 使用Istio网关管理Ingress 102
4.3.1 创建网关 102
4.3.2 创建虚拟服务 103
4.4 流量路由和金丝雀版本 107
4.4.1 流量路由 107
4.4.2 定义目的地规则 108
4.5 流量镜像 111
4.6 将流量路由到集群外部的服务 113
4.7 通过HTTPS公开入口 115
4.7.1 创建证书 115
4.7.2 配置Istio网关 116
4.7.3 允许HTTP重定向到HTTPS 118
4.7.4 为多个主机启用HTTPS 119
4.7.5 为CNAME和通配符记录启用HTTPS 121
4.8 使用Istio管理出口流量 123
4.8.1 使用ServiceEntry 123
4.8.2 使用Egress网关 124
4.9 小结 127
第5章 管理应用程序弹性 129
5.1 使用故障注入实现应用程序弹性 129
5.1.1 HTTP延迟 130
5.1.2 HTTP中止 134
5.2 使用超时和重试实现应用程序弹性 137
5.2.1 超时 137
5.2.2 重试 140
5.3 使用负载均衡构建应用程序弹性 143
5.3.1 循环 143
5.3.2 RANDOM 144
5.3.3 LEAST_REQUEST 145
5.3.4 定义多个负载均衡规则 146
5.4 速率限制 147
5.5 断路器和异常值检测 150
5.6 小结 152
第6章 确保微服务通信的安全 155
6.1 理解Istio安全架构 155
6.2 使用双向TLS进行身份验证 158
6.2.1 服务到服务的身份验证 159
6.2.2 使用网格外的客户端进行身份验证 164
6.3 配置RequestAuthentication 165
6.4 配置RequestAuthorization 172
6.5 小结 178
第7章 服务网格可观察性 179
7.1 理解可观察性 179
7.2 使用Prometheus抓取指标 181
7.2.1 安装Prometheus 182
7.2.2 部署示例应用程序 183
7.3 自定义Istio指标 187
7.3.1 Istio指标、维度和值 187
7.3.2 向Istio指标添加维度 189
7.3.3 创建新的Istio指标 192
7.4 使用Grafana可视化遥测信息 194
7.4.1 安装Grafana 194
7.4.2 创建警报 196
7.5 实现分布式跟踪 201
7.5.1 Jaeger简介 201
7.5.2 安装和配置Jaeger 202
7.5.3 检查跟踪信息 203
7.6 小结 208
第3篇 缩放、扩展和优化
第8章 将Istio扩展到跨Kubernetes的多集群部署 213
8.1 技术要求 213
8.1.1 设置Kubernetes集群 214
8.1.2 设置OpenSSL 215
8.1.3 其他Google Cloud步骤 215
8.2 在多集群部署中建立互信 216
8.3 多网络上的primary-remote配置 219
8.3.1 建立两个集群之间的信任 220
8.3.2 部署Envoy虚拟应用程序 228
8.3.3 测试虚拟应用程序的流量分布 229
8.4 同一网络上的primary-remote配置 230
8.5 不同网络上的primary-primary配置 234
8.5.1 构建多个主集群 235
8.5.2 通过Envoy虚拟服务进行部署和测试 237
8.6 同一网络上的primary-primary配置 238
8.6.1 执行清理操作 239
8.6.2 在两个集群上安装Istio 240
8.7 小结 242
第9章 扩展Istio数据平面 243
9.1 技术要求 243
9.2 关于可扩展性 244
9.3 使用EnvoyFilter自定义数据平面 246
9.4 Wasm基础 249
9.5 使用Wasm扩展Istio数据平面 253
9.5.1 Proxy-Wasm简介 253
9.5.2 Proxy-Wasm ABI规范 254
9.5.3 Proxy-Wasm SDK 256
9.5.4 在Istio中部署Wasm 261
9.6 小结 265
第10章 为非Kubernetes工作负载部署Istio服务网格 267
10.1 技术要求 267
10.2 了解混合架构 270
10.3 为混合架构设置服务网格 272
10.3.1 设置概述 272
10.3.2 在虚拟机上设置演示应用程序 275
10.3.3 在集群中设置Istio 277
10.3.4 配置Kubernetes集群 277
10.3.5 在虚拟机上设置Istio 280
10.3.6 将虚拟机工作负载纳入网格中 282
10.4 小结 285
第11章 Istio故障排除和操作 287
11.1 理解Istio组件之间的交互 287
11.1.1 探索Istiod端口 287
11.1.2 探索Envoy端口 289
11.2 检查和分析Istio配置 290
11.3 使用访问日志排除错误 294
11.3.1 启用访问日志 294
11.3.2 访问日志的内容解析 296
11.3.3 使用响应标志 297
11.4 使用调试日志排除错误 299
11.4.1 更改Istio数据平面的调试日志 299
11.4.2 更改Istio控制平面的日志级别 300
11.5 调试Istio代理 302
11.6 了解Istio的最佳实践 303
11.6.1 检查控制平面的攻击媒介 304
11.6.2 检查数据平面的攻击媒介 304
11.6.3 保护服务网格 304
11.7 使用OPA Gatekeeper自动执行最佳实践 306
11.7.1 安装和配置OPA Gatekeeper 307
11.7.2 配置约束 308
11.7.3 定义强制执行端口命名约定的约束 311
11.8 小结 314
第12章 总结和展望 317
12.1 技术要求 317
12.2 使用OPA Gatekeeper实施工作负载部署最佳实践 319
12.3 将本书知识应用到Online Boutique示例应用程序中 320
12.3.1 为示例应用程序启用服务网格 321
12.3.2 配置Istio来管理应用程序流量 323
12.3.3 配置Istio来管理应用程序弹性 327
12.3.4 配置Istio来管理应用程序安全 330
12.4 Istio的认证和学习资源 336
12.5 了解eBPF 338
12.6 小结 340
附录A 其他服务网格技术 343
A.1 Consul Connect 343
A.1.1 在minikube上安装Consul Connect 343
A.1.2 部署示例应用程序 347
A.1.3 零信任网络 348
A.1.4 流量管理和路由 350
A.2 Gloo Mesh 357
A.3 Kuma 359
A.3.1 下载并安装Kuma 359
A.3.2 在Kuma网格中部署envoydemo和curl 361
A.3.3 使用Kuma GUI查看网格状态 362
A.3.4 启用mTLS 362
A.3.5 创建流量控制策略 364
A.3.6 流量管理和路由 365
A.3.7 通过加权路由策略实现负载均衡 368
A.3.8 创建新网格 368
A.3.9 创建Kuma内置网关 369
A.3.10 定义网关路由 370
A.4 Linkerd 374
A.4.1 安装Linkerd 374
A.4.2 在Linkerd中部署envoydummy和curl 376
A.4.3 零信任网络 377
A.4.4 通过策略实现细粒度的访问控制 380
A.4.5 Linkerd其他功能简介 381
內容試閱 :
Istio是应用广泛的网格服务技术之一。它用于管理应用程序网络,可为微服务提供安全性和运营效率。本书逐层探索Istio,解释如何使用它来管理应用程序网络、弹性、可观察性和安全性。通过各种实践示例,读者将了解Istio Service Mesh的安装、架构及其各种组件,还将执行Istio的多集群安装,并将其集成部署在虚拟机的陈旧工作负载上。读者将了解如何使用WebAssembly(WASM)扩展Istio数据平面,掌握Envoy的工作机制,理解为什么将其用作Istio的数据平面;还将了解如何使用OPA Gatekeeper来自动执行Istio的最佳实践,学习如何使用Kiali、Prometheus、Grafana和Jaeger观察和操作Istio。读者还将探索其他服务网格技术,例如Linkerd、Consul、Kuma和Gloo Mesh。本书使用了轻量级应用程序来构建易于遵循的实践示例,可以帮助读者专注于实现Istio并将其部署到云和生产环境,而不必处理复杂的演示应用程序。
在阅读完本书之后,读者将能够在应用程序之间执行可靠且零信任的通信,解决应用程序网络问题,并使用Istio在分布式应用程序中构建弹性。
本书读者
具有在Kubernetes环境中使用微服务的经验并且想要解决微服务通信中出现的应用程序网络问题的软件开发人员、架构师和运维工程师都将从本书中受益。为了充分利用本书,读者需要拥有一些使用云、微服务和Kubernetes的经验。
内容介绍
本书共分3篇12章,各篇章内容如下。
? 第1篇:基础知识,包括第1章~第3章。
? 第1章“服务网格简介”,介绍了有关云计算、微服务架构和Kubernetes的基础知识,阐释了为什么需要服务网格以及它提供了哪些价值。如果读者没有使用Kubernetes、云和微服务架构处理大规模部署架构的实践经验,那么本章将使你熟悉这些概念,并为你理解后续章节更复杂的主题奠定良好的基础。
? 第2章“Istio入门”,解释了Istio在可用的服务网格技术中如此大受欢迎的原因。该章提供了安装和运行Istio的详细说明,并介绍了Istio的架构及其各种组件。在安装完成后,还在与Istio安装一起打包的示例应用程序中启用了Istio Sidecar注入。本章逐步介绍了示例应用程序中Istio启用前和启用后的情况,让读者初步理解Istio的工作原理。
? 第3章“理解Istio控制平面和数据平面”,深入探讨了Istio的控制平面和数据平面。本章将帮助读者了解Istio控制平面,以便读者可以在生产环境中规划和控制平面的安装。在阅读完本章之后,读者应该能够识别Istio控制平面的各个组件(包括 istiod),以及它们各自在Istio整体工作中提供的功能。本章还将让读者熟悉Envoy(这是Istio数据平面的关键组件)及其架构,以及如何使用Envoy作为独立代理。
? 第2篇:Istio实战,包括第4章~第7章。
? 第4章“管理应用程序流量”,详细介绍了如何使用Istio管理应用程序流量。本章有不少实战示例,探索了使用Kubernetes Ingress资源管理入口流量,展示了如何使用Istio网关来管理Ingress,以及如何通过HTTPS安全地公开入口。该章还提供了金丝雀版本、流量镜像以及将流量路由到集群外部的服务示例。最后,本章还介绍了如何使用Istio管理从网格流出的流量。
? 第5章“管理应用程序弹性”,探讨了如何使用Istio来提高微服务的应用程序弹性。本章讨论了应用程序弹性的各个方面,包括故障注入、超时和重试、负载均衡、速率限制、断路器和异常值检测等,并且演示了如何使用Istio解决这些问题。
? 第6章“确保微服务通信的安全”,深入探讨了有关安全性的高级主题。本章首先阐释了Istio的安全架构,然后实现了与网格中其他服务以及网格外 下游客户端的服务通信的双向TLS。本章将引导读者完成各种实践练习,以创建用于身份验证和授权的自定义安全策略。
? 第7章“服务网格可观察性”,深入介绍了可观察性的重要性,可用的不同类型的指标以及如何通过API获取它们,探讨了如何从Istio收集遥测信息 以及如何为网格中部署的应用程序启用分布式跟踪等。
? 第3篇:缩放、扩展和优化,包括第8章~第12章。
? 第8章“将Istio扩展到跨Kubernetes的多集群部署”,将引导读者了解如何使用Istio在跨多个Kubernetes集群部署的应用程序之间提供无缝连接。本 章还将介绍Istio的多个安装选项,以实现服务网格的高可用性和连续性。本章涵盖了Istio安装的高级主题,并帮助读者熟悉如何在多网络上进行primary-remote配置,在同一网络上进行primary-remote配置,在不同网络进行primary-primary配置,以及在同一网络上进行primary-primary配置。
? 第9章“扩展Istio数据平面”,提供了扩展Istio数据平面的各种选项。本章详细讨论了EnvoyFilter和WebAssembly,并研究了如何使用它们扩展Istio数据平面的功能。
? 第10章“为非Kubernetes工作负载部署Istio服务网格”,阐释了为什么组织仍将大量工作负载部署在虚拟机上。在此基础上介绍了混合架构的概念,即现代和遗留架构的组合,然后演示了Istio如何帮助将遗留技术和现代技 术这两类技术结合起来,以及如何将Istio从Kubernetes扩展到虚拟机。
? 第11章“Istio故障排除和操作”,详细介绍了操作Istio时会遇到的常见问题以及如何将它们与其他问题区分开来。本章介绍了运营和可靠性工程团队经常面临的运维问题,探讨了各种故障分析和解决技术。本章还提供了部署和操作Istio的各种最佳实践,并演示了如何使用OPA Gatekeeper自动执行最佳实践。
? 第12章“总结和展望”,复习了本书所学习的知识,将其用于部署和配置开源程序,帮助读者获得在现实世界中运用所学知识的信心。本章还提供了读者可以探索的各种资源。最后介绍了eBPF,这是一项有望对服务网格产生积极影响的先进技术。
? 附录A“其他服务网格技术”,介绍了其他服务网格技术,包括Consul Connect、Gloo Mesh、Kuma和Linkerd,这些技术越来越受到不同组织的欢迎、认可和采用。本附录提供的信息并不详尽,旨在让读者熟悉Istio的替代方案,并帮助读者从这些技术与Istio的对比中形成更深刻的认识。
充分利用本书
本书需要读者具备在Kubernetes环境中使用和部署微服务的实践经验,并且读者需要熟悉使用YAML和JSON以及执行Kubernetes的基本操作。由于本书大量使用了各种云提供商的服务,因此拥有一些使用各种云平台的经验会很有帮助。
表P.1列出了本书涉及的软硬件和操作系统要求。
表P.1 本书涉及的软硬件和操作系统要求
本书涉及的软硬件 操作系统需求
至少配备4核处理器和16 GB内存的工作站 macOS或Linux
访问AWS、Azure和Google Cloud订阅
Visual Studio Code或类似集成开发环境
minikube,Terraform
下载示例代码文件
本书的代码包已经在GitHub上托管,网址如下,欢迎访问。
https://github.com/PacktPublishing/Bootstrap-Service-Mesh-Implementations-with-Istio
如果代码有更新,也会同步在现有GitHub存储库上更新。
下载彩色图像
我们还提供了一个PDF文件,其中包含本书使用的屏幕截图/图表的彩色图像,可以通过以下地址下载。
https://packt.link/DW41O
本书约定
本书中使用了许多文本约定。
(1)代码格式文本:表示文本中的代码字、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟URL、用户输入和Twitter句柄等。以下段落就是一个示例。
Istio每3个月发布一个次要版本,有关详细信息,可访问:
https://istio.io/latest/docs/releases/supported-releases/
(2)有关代码块的设置如下所示。
”filterChainMatch”: {
”destinationPort”: 80,
”transportProtocol”: ”raw_buffer”
},
(3)当我们希望你注意代码块的特定部分时,相关行或项目将以粗体显示。
”filterChainMatch”: {
”destinationPort”: 80,
”transportProtocol”: ”raw_buffer”
},
(4)任何命令行输入或输出都采用如下形式。
% curl -H ”Host:httpbin.org” http://
a816bb2638a5e4a8c990ce790b47d429-1565783620.us-east-1.elb.
amazonaws.com/get
(5)术语或重要单词将在括号内保留其英文原文,以方便读者对照查看。示例如下。
云计算提供商提供对计算、存储、数据库和大量其他服务的访问,包括通过互联网提供的基础设施即服务(infrastructure as a service,IaaS)、平台即服务(platform as a service,PaaS)和软件即服务(software as a service,SaaS)。
(6)界面词汇将保留其英文原文,在后面使用括号提供其译文。示例如下。
在仪表板中可以检查Prometheus抓取的指标。其显示方法是:单击Prometheus仪表板上的Status(状态)| Targets(目标),如图7.3所示。
(7)本书还使用了以下两个图标。
表示警告或重要的注意事项。
表示提示或小技巧。