Istio最佳實戰 Istio in Action

Rinor Maloku,Posta, Christian 譯 馬若飛

  • 出版商: 電子工業
  • 出版日期: 2023-06-01
  • 售價: $828
  • 貴賓價: 9.5$787
  • 語言: 簡體中文
  • 頁數: 456
  • 裝訂: 平裝
  • ISBN: 7121457393
  • ISBN-13: 9787121457395
  • 此書翻譯自: Istio in Action
  • 立即出貨 (庫存 < 4)

買這商品的人也買了...

商品描述

Istio作為服務網格技術最具代表性的產品,歷經多年發展已日漸成熟,並受到越來越多開發者的青睞。
本書以 Istio 服務網格為核心,內容包括基本概念、核心功能、運維、企業級落地四大部分,
從基本的安裝部署到功能實踐,從底層原理分析到故障排查,從進階操作到企業級實戰,由淺入深地介紹了 Istio 服務網格的各個方面。
本書適合正在使用或關注 Istio 的開發工程師、運維工程師、架構師等雲原生領域從業者閱讀。
無論你是服務網格技術的初學者,還是該領域的專家,都能從本書中尋找到有借鑒意義的理論及實踐指導。

目錄大綱

1 部分理解Istio
1 Istio 服務網格......... 2
1.1 快速迭代帶來的挑戰...... 3
1.1.1 不可靠的雲基礎設施.......... 5
1.1.2 服務通信需要彈性.............. 6
1.1.3 實時可觀測性...... 6
1.2 使用應用程序庫解決問題.............. 7
1.3 基礎設施的解決思路...... 9
1.3.1 應用程序感知服務代理...... 9
1.3.2 認識Envoy 代理 10
1.4 什麼是服務網格. 11
1.5 Istio 服務網格簡介........ 13
1.5.1 服務網格與企業服務總線的關係.... 14
1.5.2 服務網格與API 網關的關係............ 16
1.5.3 在非微服務架構中使用Istio ............ 17
1.5.4 在分佈式架構中使用Istio 18
1.5.5 使用服務網格的缺點........ 19
本章小結...... 19

2 Istio 的步.......21
2.1 在Kubernetes 上部署Istio ............ 21
2.1.1 使用Docker Desktop 來演示樣例.... 22
2.1.2 獲取Istio 發行版............... 22
2.1.3 將Istio 組件安裝到Kubernetes 中... 24
2.2 了解Istio 控制平面....... 25
2.2.1 istiod 簡介.......... 26
2.2.2 入口網關和出口網關........ 30
2.3 在服務網格中部署你的個應用程序.... 31
2.4 Istio 的可觀測性、彈性和流量路由............ 36
2.4.1 Istio 與可觀測性 37
2.4.2 Istio 與彈性........ 44
2.4.3 Istio 與流量路由 46
本章小結...... 50

3 Istio 的數據平面:Envoy .......51
3.1 什麼是Envoy 代理........ 51
3.1.1 Envoy 的核心功能............. 53
3.1.2 Envoy 與其他代理的比較. 58
3.2 配置Envoy .......... 58
3.2.1 靜態配置. 58
3.2.2 動態配置. 60
3.3 Envoy 實戰.......... 61
3.3.1 Envoy 的Admin API ......... 65
3.3.2 Envoy 的請求重試............. 66
3.4 Envoy 與Istio 的融合.... 67
本章小結...... 69

2 部分保護、觀察和控制服務網格中的流量
4 Istio 網關:將流量導入集群....72
4.1 流量入口概念..... 73
4.1.1 虛擬IP 地址:簡化服務訪問........... 73
4.1.2 虛擬主機:來自單個接入點的多個服務........ 75
4.2 Istio 入口網關..... 75
4.2.1 聲明Gateway 資源............ 77
4.2.2 虛擬服務的網關路由........ 79
4.2.3 流量整體視圖.... 82
4.2.4 對比Istio 入口網關與Kubernetes Ingress ....... 82
4.2.5 對比Istio 入口網關與API 網關....... 83
4.3 保護網關流量..... 83
4.3.1 使用TLS 的HTTP 流量... 84
4.3.2 將HTTP 重定向到HTTPS ............... 88
4.3.3 使用mTLS 的HTTP 通信 89
4.3.4 為多個虛擬主機提供TLS 服務....... 92
4.4 TCP 流量............. 93
4.4.1 在Istio 網關上暴露TCP 端口.......... 94
4.4.2 使用SNI 直通的流量路由 96
4.5 網關使用建議..... 99
4.5.1 拆分網關的職能 99
4.5.2 網關注入.......... 101
4.5.3 入口網關訪問日誌.......... 102
4.5.4 減少網關配置.. 103
本章小結.... 104

5 流量控制:細粒度流量路由.. 105
5.1 減少部署新代碼帶來的風險...... 105
5.2 Istio 的請求路由.......... 109
5.2.1 清理工作空間.. 109
5.2.2 部署catalog 服務的v1 版本........... 110
5.2.3 部署catalog 服務的v2 版本............111
5.2.4 將所有流量路由到catalog 服務的v1 版本... 112
5.2.5 將特定請求路由到v2 版本............ 114
5.2.6 在調用鏈路內部進行路由.............. 115
5.3 流量遷移........... 117
5.4 進一步降低風險:流量鏡像...... 125
5.5 使用Istio 的服務發現路由到集群外部的服務......... 127
本章小結.... 131

6 彈性:應對應用程序的網絡挑戰............ 132
6.1 實現應用程序的彈性.. 132
6.1.1 為應用程序庫構建彈性能力.......... 133
6.1.2 使用Istio 解決彈性問題. 134
6.1.3 實現去中心化的彈性能力.............. 134
6.2 客戶端負載均衡.......... 135
6.2.1 開始使用客戶端負載均衡.............. 136
6.2.2 構建應用場景.. 138
6.2.3 測試不同的客戶端負載均衡策略.. 139
6.2.4 理解負載均衡算法的差異.............. 144
6.3 位置感知負載均衡...... 144
6.3.1 位置感知負載均衡實驗.. 145
6.3.2 利用加權分佈對位置感知負載均衡進行更多的控制.. 149
6.4 透明的超時和重試...... 152
6.4.1 超時....... 152
6.4.2 重試....... 154
6.4.3 重試.......... 160
6.5 Istio 中的熔斷... 162
6.5.1 利用連接池設置防止服務過慢...... 163
6.5.2 利用異常點檢測剔除不健康的服務.............. 169
本章小結.... 172

7 可觀測性:理解服務的行為.. 174
7.1 什麼是可觀測性.......... 175
7.1.1 可觀測性與監控.............. 175
7.1.2 Istio 如何幫助實現可觀測性.......... 176
7.2 探索Istio 的指標......... 176
7.2.1 數據平面指標.. 177
7.2.2 控制平面指標.. 182
7.3 使用Prometheus 抓取Istio 指標 184
7.3.1 安裝Prometheus 和Grafana ........... 186
7.3.2 配置Prometheus Operator 抓取Istio 控制平面和工作負載的指標... 187
7.4 自定義Istio 標準指標. 190
7.4.1 配置現有的指標.............. 193
7.4.2 創建新指標...... 197
7.4.3 使用新屬性分組調用...... 199
本章小結.... 201

8 可觀測性:使用Grafana、Jaeger 和Kiali 觀察網絡行為........... 202
8.1 使用Grafana 觀察Istio 服務和控制平面指標.......... 202
8.1.1 安裝Istio 的Grafana 儀表板.......... 203
8.1.2 查看控制平面指標.......... 205
8.1.3 查看數據平面指標.......... 206
8.2 分佈式追踪....... 206
8.2.1 分佈式追踪是怎麼工作的.............. 207
8.2.2 安裝分佈式追踪系統...... 209
8.2.3 配置Istio 實現分佈式追踪............. 210
8.2.4 查看分佈式追踪數據...... 213
8.2.5 追踪採樣、強制追踪和自定義標籤.............. 214
8.3 使用Kiali 觀察服務網格............ 220
8.3.1 安裝Kiali ......... 220
8.3.2 結論....... 225
本章小結.... 225

9 確保微服務通信安全............227
9.1 應用程序網絡安全需求.............. 227
9.1.1 服務間認證...... 228
9.1.2 端用戶認證.. 228
9.1.3 授權....... 228
9.1.4 單體和微服務應用的安全比較...... 228
9.1.5 Istio 如何實現SPIFFE .... 230
9.1.6 Istio 安全簡述.. 230
9.2 自動mTLS ........ 231
9.2.1 安裝環境.......... 232
9.2.2 理解Istio 的對等認證..... 233
9.3 授權服務間流量.......... 238
9.3.1 了解Istio 中的授權......... 239
9.3.2 設置工作區...... 240
9.3.3 當策略被應用於工作負載時行為的變化...... 241
9.3.4 默認使用一個全局策略拒所有請求.......... 242
9.3.5 允許來自單一命名空間的請求...... 243
9.3.6 允許來自非認證的工作負載的請求.............. 244
9.3.7 允許來自單一服務賬戶的請求...... 245
9.3.8 策略的條件匹配.............. 246
9.3.9 了解值匹配表達式.......... 246
9.3.10 了解評估授權策略的順序............ 248
9.4 端用戶的認證和授權.............. 249
9.4.1 什麼是JWT ..... 249
9.4.2 入口網關的端用戶認證和授權.. 251
9.4.3 使用RequestAuthentication 驗證JWT ........... 252
9.5 與自定義的外部授權服務集成.. 256
9.5.1 外部授權實踐.. 257
9.5.2 配置ExtAuthz .. 258
9.5.3 使用自定義的AuthorizationPolicy 資源........ 259
本章小結.... 260

3 部分Istio 運維
10 數據平面的故障排查......... 262
10.1 常見錯誤:數據平面配置錯誤............ 263
10.2 識別數據平面的問題 265
10.2.1 如何驗證數據平面是新的........ 265
10.2.2 使用Kiali 發現配置錯誤.............. 266
10.2.3 通過istioctl 發現配置錯誤........... 268
10.3 從Envoy 配置中發現錯誤........ 270
10.3.1 Envoy 管理界面............. 270
10.3.2 使用istioctl 查詢代理配置........... 270
10.3.3 應用程序的故障排查.... 276
10.3.4 使用ksniff 檢查網絡流量............. 282
10.4 通過Envoy 的遙測能力了解應用程序.... 285
10.4.1 在Grafana 中查看請求失敗率..... 286
10.4.2 使用Prometheus 查詢受影響的Pod ............ 287
本章小結.... 288

11 控制平面性能優化.............290
11.1 控制平面的主要目標 290
11.1.1 了解數據平面同步的步驟............ 291
11.1.2 決定性能的因素............ 292
11.2 監控控制平面. 293
11.3 性能調整......... 298
11.3.1 設置工作區.... 299
11.3.2 測量優化前的性能........ 299
11.3.3 忽略事件:使用發現選擇器縮小發現的範圍............ 303
11.3.4 事件批處理和推送節流特性........ 305
11.4 性能優化準則. 308
本章小結.... 310

4 部分在組織中落地Istio
12 在組織中擴展Istio............312
12.1 多集群服務網格的好處............ 312
12.2 多集群服務網格概述 313
12.2.1 Istio 多集群部署模型.... 314
12.2.2 在多集群部署中如何發現工作負載............ 316
12.2.3 跨集群的工作負載連接 317
12.2.4 集群間互信.... 318
12.3 多集群、多網絡、多控制平面的服務網格............ 319
12.3.1 選擇多集群部署模型.... 320
12.3.2 建立雲基礎設施............ 320
12.3.3 配置插件式CA 證書..... 321
12.3.4 在每個集群中安裝控制平面........ 322
12.3.5 啟用跨集群的工作負載發現........ 325
12.3.6 設置跨集群連接............ 327
12.3.7 跨集群的負載均衡........ 334
本章小結.... 339

13 將虛擬機工作負載納入網格340
13.1 Istio 的虛擬機支持.... 341
13.1.1 簡化虛擬機中sidecar 代理的安裝與配置... 341
13.1.2 虛擬機的高可用性........ 343
13.1.3 網格內服務的DNS 解析.............. 346
13.2 設置基礎設施. 348
13.2.1 設置服務網格 349
13.2.2 配置虛擬機.... 350
13.3 將網格擴展到虛擬機 352
13.3.1 向虛擬機暴露istiod 和集群服務. 352
13.3.2 使用WorkloadGroup 表示一個工作負載組 353
13.3.3 在虛擬機中安裝與配置istio-agent .............. 356
13.3.4 將流量路由到集群服務 359
13.3.5 將流量路由到WorkloadEntry ....... 360
13.3.6 虛擬機是由控制平面配置的:強制執行雙向認證.... 363
13.4 揭開DNS 代理的神秘面紗...... 364
13.4.1 DNS 代理如何解析集群內主機名............... 364
13.4.2 DNS 代理知道哪些主機名........... 366
13.5 自定義代理的行為.... 367
13.6 將WorkloadEntry 從網格中刪除.............. 368
本章小結.... 369

14 在請求路徑上擴展Istio ..... 370
14.1 Envoy 的擴展能力..... 371
14.1.1 了解Envoy 的過濾器鏈 371
14.1.2 用於擴展的過濾器........ 374
14.1.3 定制Istio 的數據平面... 374
14.2 使用EnvoyFilter 資源配置Envoy 過濾器............... 374
14.3 調用外部的限流請求 379
14.4 使用Lua 擴展Istio 的數據平面............... 384
14.5 使用WebAssembly 擴展Istio 的數據平面.............. 387
14.5.1 WebAssembly 簡介........ 387
14.5.2 為什麼使用WebAssembly ............ 388
14.5.3 使用WebAssembly 構建新的Envoy 過濾器.............. 389
14.5.4 使用meshctl 工具構建新的Envoy 過濾器. 389
14.5.5 部署新的WebAssembly Envoy 過濾器....... 391
本章小結.... 393
A 自定義Istio 安裝394
B Istio 的sidecar 及其註入選項............... 401
C Istio 安全——SPIFFE ......... 407
D Istio 故障排查....417
E 如何配置虛擬機接入網格..... 425