第一部分 基础篇 2
第1章 Service Mesh简介 2
1.1 微服务架构面临的一些挑战 2
1.2 技术架构演进 6
1.3 什么是Service Mesh 9
1.4 Service Mesh的功能 10
1.5 业界Service Mesh产品 11
1.5.1 Linkerd 11
1.5.2 Envoy 12
1.5.3 Istio 13
1.5.4 Conduit 13
1.5.5 Linkerd、Envoy、Istio及Conduit比较 14
1.5.6 我们需要Service Mesh吗 15
1.6 总结 15
第2章 Linkerd入门 16
2.1 Linkerd是什么 16
2.2 Linkerd架构 17
2.3 Linkerd主要功能 19
2.4 安装Linkerd 21
2.4.1 环境准备 21
2.4.2 传统安装方式 24
2.4.3 基于Docker的安装方式 27
2.5 示例演示 28
2.5.1 示例准备 28
2.5.2 基于文件的服务发现 28
2.5.3 示例演示 29
2.6 总结 30
第二部分 中级篇 32
第3章 深入浅出Linkerd配置 32
3.1 示例应用 32
3.2 环境准备 34
3.2.1 虚拟机及Docker引擎 34
3.2.2 服务发现:Consul 35
3.2.3 服务注册:Registrator 37
3.2.4 部署Linkerd 38
3.2.5 部署示例服务 41
3.3 Linkerd术语 45
3.4 Linkerd配置 46
3.4.1 配置构成 46
3.4.2 admin 48
3.4.3 namer 48
3.4.4 router 50
3.4.5 telemetry 55
3.4.6 usage 55
3.5 总结 55
第4章 深入Linkerd数据访问流 56
4.1 dtab详解 56
4.1.1 dtab定义 56
4.1.2 dtab路由原理 57
4.1.3 示例演示 60
4.2 数据访问流详解 62
4.2.1 鉴别 62
4.2.2 绑定 63
4.2.3 解析 64
4.2.4 转换 64
4.2.5 负载均衡 65
4.3 总结 67
第5章 Linkerd部署模式 68
5.1 Linkerd部署模式 68
5.1.1 Per-host模式 68
5.1.2 Sidecar模式 69
5.1.3 Per-host模式和Sidecar模式 69
5.2 配置模型 70
5.2.1 service-to-linker模型 70
5.2.2 linker-to-service模型 73
5.2.3 linker-to-linker模型 76
5.3 总结 78
第6章 Linkerd控制层:Namerd 79
6.1 Namerd简介 79
6.2 Namerd和Linkerd 80
6.3 Namerd配置详解 82
6.3.1 admin配置 82
6.3.2 interface配置 83
6.3.3 storage配置 84
6.3.4 namer配置 85
6.4 连接Linkerd和Namerd 85
6.4.1 准备Namerd配置文件 85
6.4.2 启动Namerd 86
6.4.3 准备Linkerd配置文件 88
6.4.4 启动Linkerd 89
6.4.5 示例演示 90
6.5 管理dtab路由 90
6.5.1 Namerd API简介 90
6.5.2 通过Namerd API管理dtab 91
6.5.3 通过namerctl CLI管理dtab 92
6.6 总结 93
第三部分 实战篇 96
第7章 Kubernetes基础 96
7.1 Kubemetes是什么 96
7.2 为什么需要Kubernetes 97
7.3 Kubemetes架构 99
7.4 使用Kubeadm部署Kubernetes集群 100
7.4.1 部署环境准备 100
7.4.2 部署Kubernetes集群 101
7.5 Kubernetes基本概念及资源生命周期管理 108
7.5.1 Container Runtime 108
7.5.2 Container 108
7.5.3 Pod 109
7.5.4 Label 112
7.5.5 RelicaSet 114
7.5.6 Deployment 116
7.5.7 Service 119
7.5.8 DaemonSet 121
7.5.9 ConfigMap和Secret 124
7.6 总结 128
第8章 基于Linkerd和Kubernetes的微服务实践 129
8.1 部署服务于Kubernetes平台 130
8.1.1 定义示例服务声明文件 130
8.1.2 架构预览 132
8.1.3 部署示例服务 133
8.1.4 验证 134
8.2 Linkerd作为Kubernetes平台的Service Mesh工具 135
8.2.1 架构预览 136
8.2.2 Kubemetes平台上如何配置Linkerd 137
8.2.3 运行Linkerd 141
8.2.4 部署示例服务 142
8.2.5 验证 144
8.3 服务间端到端的TLS加密 145
8.3.1 SSL/TLS简介 146
8.3.2 Linkerd透明TLS 147
8.3.3 架构预览 150
8.3.4 生成证书 151
8.3.5 配置Linkerd 151
8.3.6 运行Linkerd及示例服务 152
8.3.7 验证 153
8.4 Linkerd作为Kubernetes的Ingress Controller 155
8.4.1 架构预览 156
8.4.2 Ingress Identifer简介 157
8.4.3 配置Lnkerd 158
8.4.4 运行Linkerd及示例服务 160
8.4.5 验证 160
8.5 Linkerd作为边界流量入口 164
8.5.1 架构预览 164
8.5.2 Ingress Controller局限性 165
8.5.3 部署内部Linkerd和示例服务 165
8.5.4 部署边界Linkerd 166
8.5.5 HAproxy作为边界Linkerd负载均衡器 167
8.6 Linkerd作为边界出口 171
8.6.1 架构预览 172
8.6.2 部署EgressLinkerd 173
8.6.3 部署示例服务 177
8.6.4 部署内部Linkerd 177
8.7 基于Linkerd实现运行时路由 182
8.7.1 运行时单个请求路由 182
8.7.2 基于Namerd实现全局动态路由 185
8.8 总结 198
第9章 开发Linkerd插件 199
9.1 Linkerd模块开发框架 199
9.2 如何开发自定义插件 202
9.2.1 需求定义 202
9.2.2 环境准备 203
9.2.3 代码开发 203
9.2.4 编译 207
9.2.5 安装 209
9.2.6 验证 210
9.3 总结 213