查看原文
其他

零基础掌握Istio on Kubernetes开发与运维

华章计算机 华章计算机 2020-09-07


新书速递


目前,服务网格是云原生范畴中最热门的话题。随着容器越来越流行,服务拓扑也频繁变动,这就需要更好的网络性能。服务网格能够通过服务发现、路由、负载均衡、心跳检测和支持可观测性,帮助开发人员管理网络流量。服务网格将为无规则的、复杂的容器问题提供规范化的解决方案。


Istio是当前业界服务网格领域中最流行的实现,可帮助开发人员在混合环境中简化运行和操作云原生服务架构的应用。Istio使得开发人员能使用自己喜欢的编程语言构建服务功能,这有效提升了开发人员的生产力,同时免于将解决分布式系统问题的代码糅合到业务代码中。


Istio是一个开源项目,拥有一个充满活力、开放和多元化的社区,它的目标是赋能开发人员和运维人员,使他们在所有环境中都能敏捷地发布和维护微服务,拥有底层网络的完全可见性,且获得一致的控制和安全能力。


今天,小编为大家推《Istio服务网格技术解析与实践》在本书中,将展示如何利用Istio的功能在云原生世界中运行微服务应用。

 


目录


目  录 Contents

序 一

序 二

序 三

前 言

初级篇

第1章 服务网格与Istio  2

1.1 微服务架构的发展与挑战  2

1.2 使用应用程序库解决这些挑战  4

1.2.1 特定应用程序库的缺点  5

1.2.2 将这些问题推向基础设施  6

1.3 什么是服务网格  7

1.4 为什么服务网格是必要的  10

1.5Istio服务网格  11

1.5.1 核心功能  12

1.5.2 为什么要使用Istio  14

1.5.3 成熟度和支持级别  15

1.6 本章总结  16

第2章 快速上手Istio  17

2.1 在MiniKube上搭建Istio环境  17

2.1.1 安装启动Minikube  17

2.1.2 安装部署Helm  18

2.1.3 安装部署Istio  19

2.2 在Docker Desktop上搭建Istio环境  22

2.2.1 安装配置Docker Desktop for

Kubernetes  22

2.2.2 切换Kubernetes  24

2.2.3 安装部署Helm  26

2.2.4 安装部署Istio  26

2.3 使用公有云Istio服务  28

2.4 在Istio中部署第一个应用程序  31

2.5 本章总结  39

第3章 Istio架构剖析  40

3.1Istio的整体架构  40

3.2 剖析Istio控制平面  42

3.3 剖析Istio数据平面  45

3.3.1Envoy代理  45

3.3.2Envoy的启动配置  47

3.3.3Envoy静态与动态配置  47

3.3.4 使用Envoy  51

3.3.5Envoy请求重试  56

3.3.6Envoy的Admin API  58

3.3.7Envoy与其他类似代理的比较  61

3.4 剖析Sidecar自动注入  62

3.4.1Kubernetes的Webhook机制  62

3.4.2 启用Webhook插件  63

3.4.3 采用Webhook自动注入Istio Sidecar  63

3.4.4 开启需要自动注入Sidecar的命名空间  66

3.5 本章总结  67

中级篇

第4章 东西向流量管理  70

4.1 流量管理  70

4.1.1 术语  72

4.1.2 流量拆分与导向  72

4.1.3Istio服务与Kubernetes服务  73

4.1.4 示例  76

4.2 实现东西向流量路由  83

4.2.1 自动 Sidecar 注入  84

4.2.2 部署  85

4.2.3 查看Ingress Gateway的地址  85

4.2.4 请求路由  86

4.3 实现流量镜像及对比分析  89

4.3.1 流量镜像  89

4.3.2 流量对比  89

4.3.3 创建用于Istio流量镜像的服务  90

4.3.4 创建流量镜像的Istio策略  92

4.3.5 搭建Diffy用于请求流量对比  93

4.3.6 发送流量进行镜像验证  96

4.4 通过Istio管理应用的灰度发布  99

4.4.1Kubernetes中的灰度发布  100

4.4.2 使用 Istio进行灰度发布  101

4.4.3 统一的流量路由规则  102

4.5 本章总结  103

第5章 南北向流量管理  104

5.1Istio 网关  104

5.1.1Istio网关的工作原理  104

5.1.2Istio网关的负载均衡作用  105

5.1.3 入口网关服务  107

5.1.4 入口网关部署  107

5.1.5 网关资源  108

5.1.6 网关虚拟服务  109

5.1.7 调试入口网关  109

5.2 用HTTPS 加密网关  110

5.2.1 为入口网关配置TLS  111

5.2.2 创建示例服务  112

5.2.3 定义虚拟服务  112

5.2.4 通过网关请求示例服务  113

5.2.5 为多个主机配置 TLS入口网关  114

5.3 基于SNI的TLS路由  119

5.3.1 定义内部服务nginx  121

5.3.2 定义内部服务nginx2  122

5.3.3 部署网关  124

5.3.4 根据域名进行访问  125

5.4 服务条目  126

5.4.1 服务条目基本原理  126

5.4.2 服务条目的定义参数  127

5.5 实现出口流量路由的统一管理  130

5.5.1 出口安全  130

5.5.2 创建客户端  131

5.5.3HTTP流量网关  131

5.5.4HTTPS流量网关  133

5.5.5 出口流量的TLS发起  136

5.6 实现服务条目的DNS寻址  137

5.6.1CoreDNS 及其插件工作机制  138

5.6.2Kubernetes下的CoreDNS  139

5.6.3 部署Istio CoreDNS  140

5.6.4 更改集群CoreDNS配置  140

5.6.5 创建服务条目验证DNS解析  141

5.7 本章总结  142

第6章 流量治理  144

6.1 使用流量策略  144

6.1.1 目标规则  144

6.1.2 流量策略  145

6.2 设置负载均衡  146

6.2.1 标准负载均衡算法  147

6.2.2 会话保持  147

6.2.3 示例  147

6.3 熔断  150

6.3.1 连接池管理  151

6.3.2 异常检测  152

6.3.3 创建示例服务  152

6.3.4 使用fortio触发熔断  154

6.4 服务重试  157

6.5 故障注入  160

6.6 命名空间隔离下的流量管理  165

6.6.1Sidecar资源定义  165

6.6.2 示例  166

6.7 本章总结  169

第7章 安全  170

7.1Istio安全架构  170

7.1.1Istio身份模型  172

7.1.2Istio公钥基础设施  172

7.1.3Istio证书和密钥轮换机制  173

7.2 剖析认证机制  173

7.2.1 认证架构  174

7.2.2 双向TLS认证  175

7.2.3 认证策略  175

7.3 使用认证策略  175

7.3.1Istio默认认证策略  177

7.3.2 认证策略示例  177

7.3.3 双向认证策略检查  180

7.4 使用自定义CA证书和密钥  181

7.4.1 准备证书和密钥  181

7.4.2 插入证书和密钥  184

7.4.3 检查新证书  185

7.5 使用cert-manager管理网关证书  186

7.5.1 生成签名密钥对  186

7.5.2 将签名密钥对保存为Secret  186

7.5.3 部署cert-manager  186

7.5.4 创建引用Secret的Issuer  187

7.5.5 获得签名证书  187

7.5.6 检查证书与密钥  188

7.5.7 部署自定义网关  189

7.5.8 定义Kubernetes服务  192

7.5.9 创建虚拟服务  194

7.6 剖析授权机制  196

7.6.1 启用全局授权  197

7.6.2Istio授权策略  197

7.6.3 授权策略示例  199

7.6.4 诊断授权策略  201

7.7 本章总结  206

第8章 Mixer的控制与观测  207

8.1Mixer架构设计  207

8.2 剖析适配器机制  209

8.2.1 属性及表达式  209

8.2.2 配置模型  212

8.2.3 处理程序  212

8.2.4 示例  213

8.2.5 规则  214

8.3 指标数据收集  214

8.3.1metric模板  214

8.3.2Prometheus适配器的配置  215

8.3.3 监控指标  216

8.3.4 配置Istio收集指标  218

8.3.5 查询Istio指标  220

8.3.6 可视化Istio指标  221

8.4 集成日志数据收集  222

8.4.1logentry模板  223

8.4.2stdio适配器的配置  224

8.4.3 配置Istio日志  225

8.4.4 查看日志  226

8.4.5 安装EFK软件栈  227

8.4.6 为Fluentd适配器配置Istio资源  231

8.4.7 通过Kibana查看日志  232

8.5 启用基于Zipkin或Jaeger的分布式跟踪  234

8.5.1Istio跟踪采样率  235

8.5.2 部署应用示例  236

8.5.3 启用Zipkin  238

8.5.4 启用Jaeger  238

8.6 启用速率限制策略  240

8.6.1 配额模板  240

8.6.2 速率限制配置  241

8.6.3 部署应用示例  243

8.7 启用黑白名单策略  244

8.7.1list适配器及模板  245

8.7.2 部署应用示例  246

8.7.3 部署适配器示例  246

8.7.4 校验白名单策略  247

8.8 本章总结  248

高级篇

第9章 Istio稳定性与运维  250

9.1Istio功能模块的稳定性与常见问题  250

9.1.1 可能的请求错误排查  252

9.1.2 证书有效期管理  254

9.1.3 使用SDS动态管理证书  257

9.2Istio流量管理相关运维  258

9.2.1 路由规则对应用程序不生效  258

9.2.2Sidecar是否注入  258

9.2.3Istio配置参数优化  259

9.2.4Envoy 无法连接 HTTP1.0  260

9.2.5 检查Envoy与Pilot状态差异  260

9.3Istio组件升级与回滚  261

9.3.1 升级安装文件  261

9.3.2CRD升级  262

9.3.3 控制平面升级  262

9.3.4 数据平面Sidecar升级  263

9.3.5 升级中的影响分析  264

9.4 本章总结  267

第10章 Istio定制与扩展  268

10.1Mixer适配器扩展  268

10.2 实现适配器  270

10.3 编译与打包适配器  283

10.4Istio CNI插件  287

10.4.1 安装配置Istio CNI插件  288

10.4.2 运行机制  289

10.4.3 验证CNI插件链配置  292

10.4.4 验证iptables是否已修改  293

10.5 从Kubernetes扩展到虚拟机  294

10.5.1 网格扩展  294

10.5.2 生成Istio的配置cluster.env  297

10.5.3 生成DNS配置文件kubedns  297

10.5.4 获取Istio服务账户密钥  298

10.5.5 在虚拟机上进行配置  298

10.5.6 部署应用示例到网格扩展  300

10.6 扩展Envoy过滤器  307

10.6.1 定义Envoy过滤器  307

10.6.2 部署示例应用  310

10.7 集成外部Zipkin兼容服务  312

10.7.1 集成部署  312

10.7.2 使用原生Zipkin  314

10.7.3 使用Zipkin兼容服务  315

10.8 本章总结  316

第11章 Knative:基于Istio的无服务器计算  317

11.1Knative架构解析  317

11.1.1Knative > Kubernetes + Istio  318

11.1.2Knative的设计  319

11.1.3 安装Knative  320

11.2Knative Build运行机制  321

11.2.1Knative Build资源定义  322

11.2.2 创建Knative Build示例  322

11.2.3 验证使用Knative Build构建的镜像  326

11.3Knative Eventing运行机制  327

11.3.1 架构设计  327

11.3.2 创建Knative Eventing示例  329

11.3.3 验证事件  331

11.4 基于Istio实现Serving组件  331

11.4.1Knative Serving的设计  331

11.4.2 基于Serving实现source-to-

URL部署  333

11.5 在Istio上部署配置Knative  336

11.6 基于Knative Serving的自动伸缩  337

11.6.1 路由与自动伸缩  338

11.6.2 自动伸缩机制  340

11.6.3 自动伸缩算法  341

11.6.4 基于Serving实现自动伸缩示例  343

11.6.5 使用蓝绿部署路由和管理流量  345

11.7 本章总结  348

第12章 多集群管理  349

12.1 服务网格的未来  350

12.2 多集群部署管理  351

12.3 单控制平面VPN连接拓扑  351

12.3.1 前提约束  352

12.3.2 拓扑架构  352

12.3.3 启用双向TLS通信  354

12.3.4 部署本地控制平面  354

12.3.5 安装istio-remote  356

12.3.6 部署示例应用  359

12.4 单控制平面Gateway连接拓扑  361

12.4.1 集群感知的服务路由  361

12.4.2Istio控制平面组件  362

12.4.3istio-remote组件  363

12.4.4 部署示例应用  365

12.5 多控制平面  366

12.5.1 部署控制平面  366

12.5.2 设置DNS  368

12.5.3 部署示例应用  369

12.5.4 跨集群的版本路由  371

12.6 本章总结  374

 

上下滑动查看



点击上方链接了解详情并购买





更多精彩新书



上新 | 从0到1构建用户画像系统技术和方法论
上新 | 智能领域系统能力培养大成之作!——《智能计算系统》重磅出版!
上新 | “Flutter中文网”社区创始人倾力撰写的网红书 《Flutter实战》正式出版上新 | “计算机伦理学”——计算机科学专业的必修课上新 | 带你了解增强现实的基础理论、核心技术、系统架构以及激动人心的应用和未来


    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存