新書推薦:
《
农为邦本——农业历史与传统中国
》
售價:NT$
340.0
《
郊庙之外:隋唐国家祭祀与宗教 增订版 (三联·哈佛燕京学术丛书)
》
售價:NT$
480.0
《
小麦文明:“黄金石油”争夺战
》
售價:NT$
445.0
《
悬壶杂记全集:老中医多年临证经验总结(套装3册) 中医医案诊疗思路和处方药应用
》
售價:NT$
614.0
《
无法忍受谎言的人:一个调查记者的三十年
》
售價:NT$
290.0
《
战争社会学专论
》
售價:NT$
540.0
《
剑桥意大利戏剧史(剑桥世界戏剧史译丛)
》
售價:NT$
740.0
《
教育何用:重估教育的价值
》
售價:NT$
299.0
|
編輯推薦: |
本书通过从零开始搭建一个微服务实验,逐一展示Istio的主要功能,直观地帮助读者理解Istio,非常适合入门级读者快速掌握Istio技术。
|
內容簡介: |
本书系统化介绍Istio技术要点与应用技巧,可帮助读者快速搭建微服务架构并进行管理。主要内容包括:service mesh基本概念与使用,Istio架构设计与主要功能,快速搭建一个微服务实验,介绍如何让服务流量控制更简单,让服务更具弹性,让服务故障测试更容易,让服务通信更安全可控,让服务更易观测与监控,以及istio维护方案。本书内容丰富、案例讲解,实用性强,非常适合入门级读者快速掌握Istio技术。
|
關於作者: |
毛广献 某游戏社区与数据服务公司网络工程师,参与过多项业务技术架构设计与应用开发运维。对分布式、微服务等有着独到的见解。他是热爱技术的极客,喜欢研究新技术和开源项目。
|
目錄:
|
前言
第1章 服务网格与Istio1
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 安装Docker48
4.2 安装Kubeadm51
4.3 配置基础环境52
4.4 创建Kubernetes集群的步骤55
4.5 测试集群的正确性61
4.6 注意事项与技巧65
4.7 本章小结67
第5章 Istio部署与常用命令68
5.1 部署Istio68
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 实现服务AB测试126
7.9 实现服务灰度发布128
7.10 灰度发布与AB测试结合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 升级Istio245
12.4 使用Helm定制部署Istio253
12.5 故障排除257
12.6 一个请求的完整过程分析272
12.7 本章小结282
第13章 杂项283
13.1 CORS284
13.2 URL重定向287
13.3 URL重写289
13.4 TCP路由290
13.5 TLS路由292
13.6 mTLS迁移295
13.7 EnvoyFilter297
13.8 添加请求头299
13.9 在Gateway上使用HTTPS300
13.10 在HTTPS服务上开启mTLS304
13.11 网格中的服务健康检查306
13.12 Envoy代理Ingressgateway308
13.13 Mixer与Adapter模型311
13.14 本章小结312
|
內容試閱:
|
近几年来,容器技术的飞速发展使得微服务技术更容易落地,微服务架构在业界逐渐流行起来。但是微服务架构对基础设施要求较高,微服务依赖持续集成、服务注册、服务发现、负载均衡、健康检测、配置管理、服务路由、服务容错、日志收集、指标收集、调用链追踪等,而构建这一套基础设施的成本巨大。因此,微服务相关的框架逐渐露出水面,比如Java语言的Spring Cloud框架。虽然这些微服务框架为我们提供了很多便利,但由于这些框架是与编程语言绑定的,使得我们应用的技术栈受到了限制。即使后来有其他的微服务框架也支持多编程语言的技术栈,但由于这些微服务框架代码对服务代码入侵严重,给后续服务框架的bug修复和版本升级带来了一定的困难。所以,服务网格的概念一经提出,便得到了很多人的支持,人们对这项技术抱有很大的期望,希望能解决当前微服务所遇到的问题。
当我第一次接触服务网格技术的时候,就觉得服务网格将来可能会像IaaS、PaaS一样成为业界的主流技术,会得到广泛应用。其实,服务网格并没有提供什么新的概念和功能,它只是把原来服务框架所做的功能完全独立出来,整合了一个服务网格的基础设施层。这个改变看似很小,但是能使服务与服务治理功能实现完全解耦,这个影响是巨大的。
2017年5月,谷歌、IBM、Lyft等公司共同努力实现的开源服务网格Istio正式发布了第一个版本。而后又一个服务网格开源实现Conduit开始启航,服务网格进入了更多技术人员的视野,经过努力,Istio在2018年7月正式发布了1.0.0版本。
2018年是服务网格快速发展的一年,Istio发布的1.0.0版本标志着Istio已经成熟到可以接受生产流量的考验。2019年服务网格将会持续保持热度,作为一名技术人员,现在是时候了解一下服务网格技术了。而在所有的开源服务网格实现中,最成熟的肯定是Istio。因此,要学习和了解服务网格,首先应该学习使用Istio。
由于Istio官方文档使用英文编写,而且只简单演示了Istio提供的功能,没有基于一般的使用场景,我在学习Istio时就很迷茫。于是,我结合自己的学习经验和方法编写了这本如何在实战中学习Istio的书,以便技术人员能以最简单的方式上手Istio,理解Istio,并能在生产环境中应用Istio服务网格。
由于本书是一本实战类型的书,书中没有大篇的理论知识。对于Istio提供的功能,本书只简单地描述其作用和使用方式,然后使用实验来演示效果。我相信,只要你跟着书中的实验操作,并理解这些实验的目的,学习完本书后,你就一定能熟练使用Istio,并在以后的Istio使用中得心应手。
对服务网格感兴趣的人都可以阅读本书。如果你想了解服务网格,想知道服务网格提供了哪些功能,能解决什么问题,本书将是一个不错的选择。如果你想了解Istio,体验Istio,将来有可能将Istio应用于生产环境,那么阅读本书将是一个不错的开始。
本书主要内容如下:
第1章介绍服务网格的由来以及服务网格能给我们带来什么,接着介绍开源的服务网格实现Istio的主要功能特性及其架构设计。
第2章说明本书后续实验相关的环境和实验中的注意事项,并详细介绍后续实验中将会使用的微服务架构应用,以及微服务的容器化构建。
第3章简单介绍Vagrant及其使用方法。使用Vagrant可以快速创建实验环境,这对于我们后续实验环境的准备提供了非常大的便利,接着对创建实验环境的场景进行模拟,帮助读者熟悉Vagrant的使用流程。
第4章介绍如何使用Kubeadm快速创建一个多节点的Kubernetes集群。Kubernetes集群是后续部署Istio的基础。
第5章介绍如何以官方示例的方式部署一个包含完整功能的Istio集群,以及如何以最小资源的方式部署一个能满足大部分实验场景要求的Istio集群。此外,还简单介绍了Istio中常用的资源,以及常用的istioctl、kubectl命令。
第6章介绍微服务架构应用如何部署在Kubernetes集群中,以及如何访问部署在Kubernetes集群中的服务,还简单介绍了如何在Istio集群中部署和对外暴露服务。
第7章介绍Istio提供的服务流量管理功能,包括管理网格的入口和出口流量,根据请求进行流量拆分,如何借助Istio实现AB测试和灰度发布等功能。
第8章介绍如何让部署在Istio中的服务更具弹性,包括负载均衡、连接池、服务健康检测、服务熔断、服务超时、服务重试、服务限流功能的配置。
第9章介绍服务故障注入的相关功能,提前给服务注入故障,可以测试服务在故障中的稳定性,提前发现问题并修复问题。
第10章介绍服务间通信加密和服务间访问权限的控制。Istio提供了双向TLS进行服务间的通信加密,使用RBAC来实现细粒度的服务访问权限控制。
第11章介绍如何提升服务的可观测性。在Istio中通过简单的配置,就可以实现服务的指标收集、日志收集。通过传递指定的服务请求头,就可以轻松实现服务的调用链追踪功能,这不但增强了服务的可观测性,还大大减轻了运维人员和开发人员的负担。
第12章介绍Istio部署后的维护工作。通过部署开源的第三方仪表板工具,我们可以更方便地管理Istio。接着介绍如何在不停机的情况下升级Istio,如何使用Helm以定制化的方式部署Istio,以及当Istio出现故障时应该如何排查并解决问题。最后介绍了在Istio中一个请求从发出到响应的整个流程。
第13章介绍一些不适合放在其他章节的Istio功能,包括跨域、跳转、TCP路由、TLS路由等,以及如何在Gateway上启用HTTPS,如何为部署在Istio中的服务开启健康检查功能,如何使用Envoy代理Ingressgateway来实现把集群内的服务暴露给集群外部使用。最后还简单介绍了Mixer和Adapter模型。
本书源码
本书所有示例代码都放在GitHub上,地址为https:github.commgxianistio-lab,读者可以查看或下载。由于部署Kubernetes集群和Istio的过程中会涉及比较多的命令,我也把相关的命令放在了源码的cmd目录下。
由于作者水平和时间有限,书中难免会有一些纰漏和错误,欢迎读者及时指正。非常希望和大家一起学习和讨论服务网格与Istio,并共同推动服务网格和Istio在国内的发展。可以通过电子邮件will835559313@163.com联系到我。
致谢
感谢所有在本书撰写、出版过程中给予过帮助的人。这里要特别感谢机械工业出版社的吴怡编辑,没有她的鼎力相助,就没有本书。同时也要感谢我的家人和朋友,没有他们的支持和理解,我不可能在有限的时间里完成本书。最后要感谢阅读本书的读者,非常感谢大家的支持!
|
|