《Istio权威指南-上》目录

原 理 篇

第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

结语.......................................................................................................................... 491