第1章 服务网格与Istio 1
1.1 服务网格简介 1
1.1.1 服务网格的概念与特点 2
1.1.2 服务网格的优势 3
1.2 Istio简介 4
1.3 Istio的架构设计 5
1.3.1 数据平面 6
1.3.2 控制平面 7
1.4 Istio的功能特性 9
1.5 本章小结 10
第2章 实验说明 11
2.1 实验的环境 11
2.1.1 基础环境 11
2.1.2 命令说明 12
2.1.3 问题及解决方案 13
2.2 实验的应用 16
2.2.1 应用架构说明 16
2.2.2 应用详细说明 17
2.3 应用的构建 26
2.4 本章小结 31
第3章 使用Vagrant管理虚拟机 32
3.1 Vagrant简介 32
3.2 Vagrant常用命令 33
3.3 模拟实验时的场景 38
3.4 本章小结 47
第4章 创建Kubernetes集群 48
4.1 安装Docker 48
4.2 安装Kubeadm 51
4.3 配置基础环境 52
4.4 创建Kubernetes集群的步骤 55
4.5 测试集群的正确性 61
4.6 注意事项与技巧 65
4.7 本章小结 67
第5章 Istio部署与常用命令 68
5.1 部署Istio 68
5.2 常用资源类型 77
5.2.1 流量控制 77
5.2.2 请求配额 80
5.2.3 mTLS认证策略 81
5.2.4 RBAC访问权限 81
5.3 常用的kubectl命令 83
5.4 常用的istioctl命令 83
5.4.1 通用参数说明 84
5.4.2 常用命令 84
5.5 注意事项与技巧 85
5.6 本章小结 89
第6章 微服务应用的部署 90
6.1 微服务应用架构 90
6.2 部署服务 94
6.3 访问服务 98
6.4 在Istio中部署微服务 102
6.5 本章小结 105
第7章 让服务流量控制更简单 106
7.1 整体介绍 106
7.2 管理集群的入口流量 110
7.3 把请求路由到服务的指定版本 111
7.4 根据服务版本权重拆分流量 113
7.5 根据请求信息路由到服务的不同版本 114
7.6 流量镜像 115
7.7 管理集群的出口流量 117
7.8 实现服务A/B测试 126
7.9 实现服务灰度发布 128
7.10 灰度发布与A/B测试结合 132
7.11 本章小结 135
第8章 让服务更具弹性 136
8.1 整体介绍 136
8.2 负载均衡 138
8.3 连接池 141
8.4 健康检测 144
8.5 熔断 145
8.6 超时 149
8.7 重试 151
8.8 限流 153
8.9 本章小结 165
第9章 让服务故障检测更容易 166
9.1 整体介绍 166
9.2 给服务增加时延 168
9.3 给服务注入错误 169
9.4 时延与错误配合使用 171
9.5 本章小结 173
第10章 让服务通信更安全可控 174
10.1 整体介绍 174
10.2 Denier适配器 176
10.3 黑白名单 177
10.4 服务与身份认证 180
10.5 RBAC访问控制 194
10.6 本章小结 205
第11章 让服务更易观测与监控 206
11.1 整体介绍 206
11.2 指标收集 209
11.3 日志收集 216
11.4 调用链追踪 224
11.5 服务指标可视化 230
11.6 服务调用树 235
11.7 本章小结 239
第12章 Istio维护 240
12.1 整体介绍 240
12.2 Istio服务网格仪表板 241
12.3 升级Istio 245
12.4 使用Helm定制部署Istio 253
12.5 故障排除 257
12.6 一个请求的完整过程分析 272
12.7 本章小结 282
第13章 杂项 283
13.1 CORS 284
13.2 URL重定向 287
13.3 URL重写 289
13.4 TCP路由 290
13.5 TLS路由 292
13.6 mTLS迁移 295
13.7 EnvoyFilter 297
13.8 添加请求头 299
13.9 在Gateway上使用HTTPS 300
13.10 在HTTPS服务上开启mTLS 304
13.11 网格中的服务健康检查 306
13.12 Envoy代理Ingressgateway 308
13.13 Mixer与Adapter模型 311
13.14 本章小结 312