Istio服务网格技术解析与实践
上QQ阅读APP看书,第一时间看更新

前言

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

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

Istio是一个开源项目,拥有一个充满活力、开放和多元化的社区,它的目标是赋能开发人员和运维人员,使他们在所有环境中都能敏捷地发布和维护微服务,拥有底层网络的完全可见性,且获得一致的控制和安全能力。在本书中,我们将展示如何利用Istio的功能在云原生世界中运行微服务应用。

本书适合零基础初学者,对服务网格感兴趣的人也可以把本书作为一个不错的起点。本书旨在让读者熟悉服务网格的基础概念和理论,了解在现实世界中如何应用服务网格技术。

诚然,如果读者已经对服务网格有所了解,或者在实际工作中已经使用过类似的技术,本书的中、高级篇提到的实际应用中遇到的经验教训也非常有用。

全书分为3大篇:初级篇、中级篇、高级篇。初级篇包括第1~3章,中级篇包括第4~8章,高级篇包括第9~12章。

第1章讨论从单体应用程序向分布式微服务架构进行转型的过程中面临的挑战,引出解决这些问题的一个方法,即服务网格(Service Mesh)技术。阐述Istio作为服务网格技术的代表,如何提供一个完整的解决方案。

第2章重点介绍如何在MiniKube、Docker Desktop上搭建Istio环境,用于个人开发测试。同时介绍基于公有云Kubernetes容器服务,如何搭建用于企业级应用开发及生产运行的Istio环境,以及公有云提供的Istio环境。最后,为读者准备了一个简单示例,以供学习如何在搭建好的Istio环境中部署一个应用程序来体验Istio的功能。

第3章重点介绍Istio的架构,首先从整体架构设计原理出发,一步步详细介绍Istio的控制平面、数据平面以及Envoy在Istio架构下的部署使用,并针对当下的其他服务网格进行对比。

第4章重点介绍Istio的东西向流量治理方法,首先介绍Istio流量管理的基本内容以及如何使用东西向流量管理,接着针对流量路由规则、流量镜像通过示例展开详细介绍,最后介绍如何通过Istio管理应用的灰度发布场景,并详述流量路由规则的定义。

第5章介绍Istio南北向流量管理方法,即将集群外部的客户端连接到集群内运行,以及从集群内访问集群外部的任何服务。首先介绍Istio网关以及服务条目(Service Entry)的概念,然后详细介绍如何加密网关,最后介绍基于CoreDNS插件扩展实现服务条目的DNS寻址。

第6章介绍Istio在流量治理方面的高级功能,包括如何使用流量策略、设置负载均衡,重点介绍Istio提供的混沌工程能力,即如何使用连接池配置和异常检测实现熔断功能,并通过示例介绍服务重试和故障注入的操作方法。最后,讲述了Istio 1.1之后新增的Sidecar命名空间隔离下的流量管理功能。

第7章介绍Istio在安全方面的功能,剖析Citadel的架构设计,介绍如何使用认证策略、双向认证等功能,以及如何提升Istio在生产环境中的安全性。

第8章介绍Istio Mixer的控制与观测功能,首先介绍Mixer的架构设计,然后介绍几个适配器,包括用于指标数据收集的Prometheus适配器、日志数据收集适配器,以及如何启用分布式跟踪、速率限制策略及黑白名单策略等。

第9章围绕Istio的稳定性与运维调试展开。首先,介绍Istio相关组件的功能稳定性、可能的请求错误排查情况,以及如何使用SDS动态管理证书来提升稳定性,接着重点阐述Istio流量管理相关的运维及问题排查,以帮助读者在遇到问题时可以参考调试,最后介绍Istio在运维过程中涉及的组件升级与回滚,以及带来的影响。

第10章介绍如何对Istio进行定制与扩展。首先介绍如何扩展Mixer适配器,通过适配器将Mixer与不同的后端基础设施集成。之后从多个角度阐述Istio的定制与扩展功能,包括Istio CNI插件扩展,从Kubernetes扩展到虚拟机的网格扩展,如何扩展Envoy过滤器以及如何集成外部Zipkin兼容服务。

第11章介绍Knative如何基于Istio实现了无服务器计算能力,并通过示例讲解Knative的使用。

第12章总结分析以Kubernetes与Istio为基础的云原生操作系统给云计算领域带来的影响,以及云原生技术的生态系统与未来发展。同时,介绍了服务网格如何支持多云环境下、多集群混合部署。

本书所有示例代码都放在GitHub上,地址为https://github.com/osswangxining/istio-book,读者可以查看或下载使用。

由于作者水平和时间有限,书中难免会有一些纰漏和错误,欢迎读者及时指正。可以通过电子邮件osswangxining@163.com联系到我。

致谢

感谢所有在本书撰写、出版过程中给予过帮助的人。这本书从筹划到出版的整个过程,得到了很多人的支持和帮助。这里要特别感谢机械工业出版社的吴怡编辑,没有她的鼎力相助,就没有本书。同时也要特别感谢我所在的阿里云容器服务团队的负责人易立以及每一位同事,没有他们的支持和智慧,我不可能在有限的时间里把这些经验知识变成一本书籍。本书写作过程中参考了社区和业界众多厂商的资料,恕不一一列举,在此表示衷心感谢!最后要感谢阅读本书的读者,感谢你在阅读本书的过程中“聆听”我的想法!