《Istio权威指南-下》前言

Istio从2017年开源第1个版本到当前版本,已经走过了5年多的时间。在此期间,伴随着云原生技术在各个领域的飞速发展,服务网格的应用也越来越广泛和深入。作为服务网格领域最具影响力的项目,Istio快速发展和成熟,获得越来越多的技术人员关注和应用。我们希望通过《Istio权威指南》系统且深入地讲解Istio,帮助相关技术人员了解和熟悉Istio,满足其日常工作中的需求。《Istio权威指南(上):云原生服务网格Istio原理与实践》是《Istio权威指南》的上册,重点讲解Istio的原理与实践;《Istio权威指南(下):云原生服务网格Istio架构与源码》是《Istio权威指南》的下册,重点讲解Istio的架构与源码。

近年来,服务网格在各个行业中的生产落地越来越多。CNCF在2022年上半年公布的服务网格调查报告显示,服务网格的生产使用率已达到60%,有19%的公司计划在接下来的一年内使用服务网格。当然,服务网格作为云原生的重要技术之一,当前在Gartner的评定中仍处于技术发展的早期使用阶段,有很大的发展空间。

CNCF这几年的年度调查显示,Istio一直是生产环境下最受欢迎和使用最多的服务网格。其重要原因是,Istio是功能非常全面、扩展性非常好、与云原生技术结合得非常紧密、非常适用于云原生场景的服务网格。像早期Kubernetes在编排领域的设计和定位一样,Istio从2017年第1个版本开始规划项目的应用场景和架构时,就致力于构建一个云原生的基础设施平台,而不是解决某具体问题的简单工具。

作为基础设施平台,Istio向应用开发人员和应用运维人员提供了非常大的透明度。Istio自动在业务负载中注入服务网格数据面代理,自动拦截业务的访问流量,可方便地在多种环境下部署和应用,使得业务在使用Istio时无须做任何修改,甚至感知不到这个基础设施的存在。在实现上,Istio提供了统一的配置模型和执行机制来保证策略的一致性,其控制面和数据面在架构上都提供了高度的可扩展性,支持用户基于实际需要进行扩展。

2022年9月28日,Istio项目被正式批准加入CNCF。这必将推动Istio与Envoy项目的紧密协作,一起构建云原生应用流量管理的技术栈。正如Kubernetes已成为容器编排领域的行业标准,加入CNCF也将进一步促进Istio成为应用流量治理领域的事实标准。Istio和Kubernetes的紧密配合,也将有助于拉通规划和开发更有价值的功能。根据Istio官方的统计,Istio项目已有8800名个人贡献者,超过260个版本,并有来自15家公司的85名维护者,可见Istio在技术圈和产业圈都获得了极大的关注和认可。

本书作者所在的华为云作为云原生领域的早期实践者与社区领导者之一,在Istio项目发展初期就参与了社区工作,积极实践并推动项目的发展,贡献了大量大颗粒特性。本书作者之一徐中虎在2020年Istio社区进行的第一次治理委员会选举中作为亚洲唯一代表入选,参与Istio技术策略的制定和社区决策。

本书作者作为Istio早期的实践者,除了持续开发满足用户需求的服务网格产品并参与社区贡献,也积极促进服务网格等云原生技术在国内的推广,包括于2019年出版《云原生服务网格Istio:原理、实践、架构与源码解析》一书,并通过KubeCon、IstioCon、ServiceMeshCon等云原生和服务网格相关的技术峰会,推广服务网格和Istio相关的架构、生产实践和配套解决方案等。

写作目的

《Istio权威指南》作为“华为云原生技术丛书”的一员,面向云计算领域的从业者及感兴趣的技术人员,普及与推广Istio。本书作者来自华为云云原生团队,本书基于作者在华为云及Istio社区的设计与开发实践,以及与服务网格强相关的Kubernetes容器、微服务和云原生领域的丰富经验,对Istio的原理、实践、架构与源码进行了系统化的深入剖析,由浅入深地讲解了Istio的概念、原理、架构、模型、用法、设计理念、典型实践和源码细节。

本书是《Istio权威指南》的下册,适合入门级读者从零开始了解Istio的架构,也适合有一定基础的读者深入研究Istio的源码。

《Istio权威指南》的组织架构

《Istio权威指南》分为原理篇、实践篇、架构篇和源码篇,总计26章,其组织架构如下。

◎ 原理篇:讲解Istio的相关概念、主要架构和工作原理。其中,第1章通过讲解Istio与微服务、服务网格、Kubernetes这几个云原生关键技术的联系,帮助读者立体地理解Istio的概念。第2章概述Istio的工作机制、服务模型、总体架构和主要组件。第3、4、5章通过较大篇幅讲解Istio提供的流量治理、可观测性和策略控制、服务安全这三大核心特性,包括其各自解决的问题、实现原理、配置模型、配置定义和典型应用,可以满足大多数读者在工作中的具体需求。第6章重点讲解自动注入和流量拦截的透明代理原理。第7章讲解Istio正在快速发展的多基础设施流量管理,包括对各种多集群模型、容器、虚拟机的统一管理等。

◎ 实践篇:通过贯穿全书的一个天气预报应用来实践Istio的非侵入能力。其中,第8章讲解如何从零开始搭建环境。第9章通过Istio的非侵入方式生成指标、拓扑、调用链和访问日志等。第10章讲解多种灰度发布方式,带读者了解Istio灵活的发布策略。第11章讲解负载均衡、会话保持、故障注入、超时、重试、HTTP重定向、HTTP重写、熔断与连接池、熔断异常点检测、限流等流量策略的实践。第12章讲解两种认证策略及其与授权的配合,以及Istio倡导的零信任网络的关键技术。第13章讲解入口网关和出口网关的流量管理,展示服务网格对东西向流量和南北向流量的管理。第14章则是对多集群和虚拟机环境下流量治理的实践。

◎ 架构篇:从架构的视角分别讲解Istio各组件的设计思想、数据模型和核心工作流程。在Istio 1.16中,Istiod以原有的Pilot为基础框架构建了包含Pilot、Citadel、Galley等组件的统一控制面。第15、16、17章分别讲解以上三个组件各自的架构、模型和流程机制。第18、19、20章依次讲解服务网格数据面上Pilot-agent、Envoy和Istio-proxy的架构和流程,包括三者的结合关系,配合Istio控制面组件完成流量管理,特别是Envoy的架构、模型和关键流程。

◎ 源码篇:包括第21~26章,与架构篇的6章对应,分别讲解Istio管理面组件Pilot、Citadel、Galley与数据面Pilot-agent、Envoy、Istio-proxy的主要代码结构、代码流程和关键代码片段。本篇配合架构篇中每个组件的架构和机制,对Istio重要组件的实现进行了更详细的讲解和剖析,为读者深入研读Istio相关代码,以及在生产环境下进行相应代码的调试和修改提供指导。

学习建议

对于有不同需求的读者,我们建议这样使用本书。

◎ 对云原生技术感兴趣的所有读者,都可通过阅读《Istio权威指南(上):云原生服务网格Istio原理与实践》,了解服务网格和Istio的概念、技术背景、设计理念与功能原理,并全面掌握Istio流量治理、可观测性和安全等功能的使用方式。通过实践篇可以从零开始学习搭建Istio运行环境并完成多种场景的实践,逐渐熟悉Istio的功能、应用场景,以及需要解决的问题,并加深对Istio原理的理解。对于大多数架构师、开发者和其他从业人员,通过对原理篇和实践篇的学习,可以系统、全面地了解Istio的方方面面,满足日常工作需要。

◎ 对Istio架构和实现细节感兴趣的读者,可以阅读《Istio权威指南(下):云原生服务网格Istio架构与源码》,了解Istio的整体架构、各个组件的详细架构、设计理念和关键的机制流程。若对Istio源码感兴趣,并且在实际工作中需要调试或基于源码进行二次开发,那么还可以通过阅读源码篇,了解Istio各个项目的代码结构、详细流程、主要数据结构及关键代码片段。在学习源码的基础上,读者可以根据自己的兴趣或工作需求,深入了解某一关键机制的完整实现,并作为贡献者参与Istio或Envoy项目的开发。

勘误和支持

您在阅读本书的过程中有任何问题或者建议时,都可以通过本书源码仓库提交Issue或者PR(源码仓库地址参见本书封底的读者服务),也可以关注华为云原生官方微信公众号并加入微信群与我们交流。我们十分感谢并重视您的反馈,会对您提出的问题、建议进行梳理与反馈,并在本书后续版本中及时做出勘误与更新。

本书还免费提供了Istio培训视频及Istio常见问题解答等资源,请通过本书封底的读者服务获取这些资源。

致谢

在本书的写作及成书过程中,本书作者团队得到了公司内外领导、同事及朋友的指导、鼓励和帮助。感谢华为云张平安、张宇昕、李帮清等业务主管对华为云原生技术丛书及本书写作的大力支持;感谢华为云容器团队张琦、王泽锋、张永明、吕赟等对本书的审阅与建议;感谢电子工业出版社博文视点张国霞编辑一丝不苟地制订出版计划及组织工作。感谢章鑫、徐飞等一起参与华为云原生技术丛书《云原生服务网格Istio:原理、实践、架构与源码解析》的创作,你们为国内服务网格技术的推广做出了很大贡献,也为本书的出版打下了良好的基础。感谢四位作者的家人,特别是豆豆、小核桃、毛毛小朋友的支持,本书创作的大部分时间源自陪伴你们的时间;也感谢CNCF及Istio、Kubernetes、Envoy社区众多开源爱好者辛勤、无私的工作,期待和你们一起基于云原生技术为产业创造更大价值。谢谢大家!

华为云容器服务域总监 黄 毽

华为云应用服务网格架构师 张超盟