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社區眾多開源愛好者辛勤、無私的工作,期待和你們一起基於雲原生技術為產業創造更大價值。謝謝大家!
——華為雲容器服務域總監 黃 毽
——華為雲應用服務網格架構師 張超盟