Istio權威指南(下):云原生服務網格Istio架構與源碼
定 價:128 元
叢書名:華為云原生技術叢書
- 作者:張超盟 等
- 出版時間:2023/4/1
- ISBN:9787121453052
- 出 版 社:電子工業(yè)出版社
- 中圖法分類:TP368.5-62
- 頁碼:468
- 紙張:
- 版次:01
- 開本:16開
本書是《Istio權威指南》的下冊,重點講解Istio的架構與源碼,分為架構篇和源碼篇。 架構篇從架構的視角分別介紹Istio各組件的設計思想、數據模型和核心工作流程。在Istio 1.16中,Istiod以原有的Pilot為基礎框架構建了包含Pilot、Citadel、Galley等組件的統(tǒng)一控制面。本書第15、16、17章會分別介紹以上三個組件各自的架構、模型和流程機制;第18、19、20章依次講解服務網格數據面上Pilot-agent、Envoy和Istio-proxy的架構和流程,包括三者的結合關系,配合Istio控制面組件實現(xiàn)流量管理功能,特別是Envoy的架構、模型和關鍵流程。 源碼篇包括第21~26章,和《Istio權威指南(上)》中架構篇的6章對應,分別介紹Istio管理面組件Pilot、Citadel、Galley與數據面Pilot-agent、Envoy和Istio-proxy的主要代碼結構、代碼流程及關鍵代碼片段。本篇配合架構篇中每個組件的架構和機制,對Istio重要組件的實現(xiàn)進行了更詳細的講解和剖析,為讀者深入研讀Istio相關代碼,以及在生產環(huán)境中進行相應代碼的調試和修改提供指導。
張超盟華為云應用服務網格首席架構師,開源技術愛好者,Istio社區(qū)成員,KubeCon、IstioCon及ServiceMeshCon等會議的演講者,技術圖書作者。擁有15年以上的開發(fā)經驗,先后負責過華為云容器應用運維、微服務平臺、云服務目錄、云服務可靠性、服務網格等云原生產品的架構設計與開發(fā)工作,主導過多個重大項目的云原生和微服務化生產落地。在服務網格、Kubernetes容器服務、微服務架構、應用網絡、應用性能管理、大數據、中間件及DevOps工具等方面有深入的研究與實踐。早期曾在中鐵一局從事路橋建設工作。徐中虎開源技術專家,華為云云原生團隊核心成員,開源技術愛好者,服務網格Istio核心Maintainer,Istio社區(qū)指導委員會成員,Kubernetes項目核心貢獻者,批量計算項目Volcano的核心Maintainer,擁有豐富的開源工作經驗。主要研究方向有微服務架構、服務網格、容器編排平臺Kubernetes和未來的分布式云原生架構等。在分布式系統(tǒng)的性能優(yōu)化、高可靠和可擴展方面研究深入、經驗豐富。張偉擁有18年架構設計與開發(fā)經驗,先后就職于億陽信通、加拿大北電網絡(中國)、甲骨文、Polycom、阿里巴巴及華為等公司。作為核心開發(fā)人員開發(fā)過傳輸網管系統(tǒng)、Tuxedo交易中間件、ts-server多媒體轉碼服務、GTS高性能事務云服務、sc高性能注冊中心、ASM數據面等多個產品,現(xiàn)主要負責華為云ASM服務網格數據面代理產品的設計與開發(fā)工作。冷雪西安電子科技大學杭州研究院菁英副教授,浙江大學博士。主要研究方向有云原生性能優(yōu)化、智能運維、安全性與可靠性增強等。曾就職于華為云,主導了服務網格項目中性能優(yōu)化與智能運維相關的落地與實施工作。
架 構 篇
第15章 Pilot的架構 2
15.1 Pilot的基本架構 2
15.1.1 Istio的服務模型 4
15.1.2 xDS協(xié)議 6
15.2 Pilot的原理 12
15.2.1 xDS服務器 13
15.2.2 服務發(fā)現(xiàn) 24
15.2.3 配置規(guī)則發(fā)現(xiàn) 29
15.2.4 xDS的生成和分發(fā) 35
15.3 安全插件 42
15.3.1 認證插件 43
15.3.2 授權插件 46
15.4 Pilot的關鍵設計 48
15.4.1 三級緩存模型 48
15.4.2 去抖動分發(fā) 50
15.4.3 防過度分發(fā) 51
15.4.4 增量EDS 51
15.4.5 資源隔離 53
15.4.6 自動管理虛擬機工作負載 54
15.5 本章小結 55
第16章 Citadel的架構 56
16.1 Istio的證書和身份管理 56
16.2 Citadel的基本架構 59
16.3 Citadel的核心原理 60
16.3.1 核心組件的初始化 61
16.3.2 CA服務器 62
16.3.3 證書簽發(fā) 63
16.3.4 證書輪轉器 65
16.4 本章小結 67
第17章 Galley的架構 68
17.1 簡化的Galley 68
17.2 Galley的整體架構 69
17.2.1 早期的MCP 70
17.2.2 基于xDS的MCP 72
17.3 Galley的核心工作原理 72
17.3.1 啟動初始化 72
17.3.2 API校驗 75
17.3.3 對API配置的管理 78
17.4 本章小結 79
第18章 Pilot-agent的架構 80
18.1 Pilot-agent的用途 81
18.2 Pilot-agent的核心架構 82
18.3 Pilot-agent的原理 84
18.3.1 Envoy的啟動 84
18.3.2 優(yōu)雅退出 85
18.3.3 xDS代理 87
18.3.4 證書管理 90
18.3.5 DNS服務器 91
18.3.6 應用健康檢查 92
18.4 本章小結 93
第19章 Envoy的架構 94
19.1 Envoy的整體架構 95
19.1.1 Envoy的內部架構 96
19.1.2 Envoy的通信架構 100
19.2 Envoy的內存管理 110
19.2.1 堆內存管理 110
19.2.2 Buffer管理 111
19.3 Envoy過濾器的架構 114
19.3.1 過濾器的注冊 115
19.3.2 過濾器的回調方法 117
19.3.3 過濾器的掛起與恢復 118
19.4 Envoy的初始化流程 119
19.4.1 靜態(tài)配置 120
19.4.2 動態(tài)配置 121
19.4.3 Envoy的創(chuàng)建及初始化流程 124
19.4.4 Envoy的運行流程 128
19.4.5 目標服務Cluster的創(chuàng)建 129
19.4.6 監(jiān)聽器的創(chuàng)建 131
19.5 Envoy的網絡及線程模型 133
19.5.1 Server主線程 134
19.5.2 Accesslog線程 136
19.5.3 工作線程 138
19.5.4 GuardDog線程 139
19.5.5 線程間的同步 139
19.6 Envoy的熱升級流程 141
19.7 Envoy的新連接處理流程 144
19.8 Envoy的請求及響應數據處理流程 145
19.8.1 對下游請求數據的接收及處理 146
19.8.2 對上游請求數據的處理及發(fā)送 149
19.8.3 對上游響應數據的接收及發(fā)送 151
19.9 xDS的原理及工作流程 152
19.10 安全證書處理 155
19.11 WASM虛擬機的原理 158
19.12 本章小結 161
第20章 Istio-proxy的架構 162
20.1 Istio-proxy的基本架構 162
20.2 Istio-proxy的原理 163
20.2.1 Istio-proxy的整體工作流程 163
20.2.2 L4 metadata_exchange的工作流程 164
20.2.3 L7 metadata_exchange擴展的工作流程 169
20.2.4 Stats的工作流程 170
20.3 本章小結 173
源 碼 篇
第21章 Pilot源碼解析 175
21.1 啟動流程 175
21.2 關鍵代碼解析 177
21.2.1 ConfigController 178
21.2.2 ServiceController 186
21.2.3 xDS的異步分發(fā) 194
21.2.4 對xDS更新的預處理 202
21.2.5 xDS配置的生成及分發(fā) 208
21.3 本章小結 211
第22章 Citadel源碼解析 212
22.1 啟動流程 212
22.1.1 Istio CA的創(chuàng)建 213
22.1.2 SDS服務器的初始化 214
22.1.3 Istio CA的啟動 215
22.2 關鍵代碼解析 216
22.2.1 CA 服務器的核心原理 216
22.2.2 證書簽發(fā)實體IstioCA 218
22.2.3 CredentialsController的創(chuàng)建和核心原理 222
22.3 本章小結 224
第23章 Galley源碼解析 225
23.1 啟動流程 225
23.1.1 Galley WebhookServer的初始化 226
23.1.2 ValidatingWebhookConfiguration控制器的初始化 226
23.2 關鍵代碼解析 228
23.2.1 配置校驗 228
23.2.2 Validating控制器的實現(xiàn) 232
23.3 本章小結 235
第24章 Pilot-agent源碼解析 236
24.1 整體架構 236
24.2 啟動及監(jiān)控 238
24.3 xDS轉發(fā)服務 243
24.4 SDS證書服務 248
24.5 健康檢查 255
24.5.1 應用容器的LivenessProbe探測 255
24.5.2 應用容器的ReadinessProbe探測 257
24.5.3 Envoy進程的ReadinessProbe探測 258
24.5.4 Pilot-agent進程的LivenessProbe探測 262
24.6 本章小結 265
第25章 Envoy源碼解析 266
25.1 Envoy的初始化 266
25.1.1 啟動參數bootstrap的初始化 267
25.1.2 初始化觀測指標 268
25.1.3 過濾器注冊及信息補齊 269
25.1.4 Envoy自身信息解析 273
25.1.5 Admin API的初始化 273
25.1.6 Worker的初始化 276
25.1.7 Dispatcher內存延遲析構 279
25.1.8 CDS的初始化 283
25.1.9 LDS的初始化 286
25.1.10 初始化觀測管理系統(tǒng) 287
25.1.11 啟動Stats定期刷新 292
25.1.12 GuardDog的初始化 292
25.2 熱重啟的流程 296
25.3 Envoy的運行和連接創(chuàng)建 298
25.3.1 啟動Worker工作線程 299
25.3.2 監(jiān)聽器的加載 301
25.3.3 接收連接 304
25.4 Envoy接收及處理數據 309
25.4.1 讀取數據 310
25.4.2 接收數據 311
25.4.3 處理數據 312
25.5 Envoy發(fā)送數據到服務端 317
25.5.1 路由匹配 317
25.5.2 獲取連接池 320
25.5.3 創(chuàng)建上游請求 325
25.6 Envoy收到服務端響應 333
25.6.1 接收響應數據 333
25.6.2 發(fā)送響應數據 335
25.7 xDS流程解析 337
25.7.1 xDS公共訂閱 337
25.7.2 xDS推送 342
25.7.3 LDS更新 343
25.7.4 SDS訂閱 350
25.8 遙測元數據存儲 352
25.8.1 創(chuàng)建遙測元數據 352
25.8.2 收集Stats觀測數據 360
25.8.3 定義靜態(tài)指標 361
25.9 WASM擴展 363
25.9.1 WASM虛擬機的啟動 363
25.9.2 WASM虛擬機的運行 374
25.10 本章小結 387
第26章 Istio-proxy源碼解析 388
26.1 metadata_exchange 388
26.2 遙測數據Stats的上報 395
26.3 源碼地址 406
26.4 本章小結 408
結 語 409