Istio服務格線技術解析與實踐

Istio服務格線技術解析與實踐

《Istio服務格線技術解析與實踐》

本書由阿里雲高級技術專家王夕寧撰寫,詳細介紹Istio的基本原理與開發實戰,包含大量精選案例和參考代碼可以下載,可快速入門Istio開發。

雲計算專家帶你學習Istio開發與運維。

從基礎概念入手,包括服務格線的整個流程和細節內容,以及雲原生技術生態。

基本介紹

  • 中文名:Istio服務格線技術解析與實踐
  • 作者:王夕寧
  • 出版時間:2020年4月1日
  • 出版社:機械工業出版社
  • 頁數:400 頁
  • ISBN:9787111644682
  • 類別:IT科技技術圖書
  • 原作品:Istio服務格線技術解析與實踐
  • 定價:99 元
  • 開本:16 開
  • 裝幀:16開
內容簡介,圖書目錄,出版背景,作者簡介,

內容簡介

Istio作為服務格線的優秀解決方案,為雲原生服務的部署與運維提供了強有力的支持,在服務管理、安全、可觀測性方面提供了全面解決方案。本書系統介紹服務格線技術與Istio的開發實戰。
l 初級篇:第1~3章,首先介紹Istio和服務格線的基本概念,並快速搭建Istio環境,部署第一個應用程式;然後介紹Istio的整體架構。
l 中級篇:第4~8章,介紹Istio在東西向、南北向流量方面的路由控制能力,包括流量路由規則、流量鏡像等,以及流量治理方面的高級能力,包括流量策略、負載均衡等;還介紹Istio安全方面的能力,以及Istio Mixer的控制與觀測能力。
l 高級篇:第9~12章,介紹Istio的穩定性與運維經驗、Istio的定製與擴展、基於Istio的無伺服器計算設計等;最後對雲原生技術的生態系統進行了介紹和未來展望,並展示了如何實現多雲環境下的多集群部署。

圖書目錄

目  錄Contents
序 一
序 二
序 三
前 言
初級篇
第1章 服務格線與Istio 2
1.1 微服務架構的發展與挑戰 2
1.2 使用應用程式庫解決這些挑戰 4
1.2.1 特定應用程式庫的缺點 5
1.2.2 將這些問題推向基礎設施 6
1.3 什麼是服務格線 7
1.4 為什麼服務格線是必要的 10
1.5 Istio服務格線 11
1.5.1 核心功能 12
1.5.2 為什麼要使用Istio 14
1.5.3 成熟度和支持級別 15
1.6 本章總結 16
第2章 快速上手Istio 17
2.1 在MiniKube上搭建Istio環境 17
2.1.1 安裝啟動Minikube 17
2.1.2 安裝部署Helm 18
2.1.3 安裝部署Istio 19
2.2 在Docker Desktop上搭建Istio環境 22
2.2.1 安裝配置Docker Desktop for
 Kubernetes 22
2.2.2 切換Kubernetes 24
2.2.3 安裝部署Helm 26
2.2.4 安裝部署Istio 26
2.3 使用公有雲Istio服務 28
2.4 在Istio中部署第一個應用程式 31
2.5 本章總結 39
第3章 Istio架構剖析 40
3.1 Istio的整體架構 40
3.2 剖析Istio控制平面 42
3.3 剖析Istio數據平面 45
3.3.1 Envoy代理 45
3.3.2 Envoy的啟動配置 47
3.3.3 Envoy靜態與動態配置 47
3.3.4 使用Envoy 51
3.3.5 Envoy請求重試 56
3.3.6 Envoy的Admin API 58
3.3.7 Envoy與其他類似代理的比較 61
3.4 剖析Sidecar自動注入 62
3.4.1 Kubernetes的Webhook機制 62
3.4.2 啟用Webhook外掛程式 63
3.4.3 採用Webhook自動注入Istio Sidecar 63
3.4.4 開啟需要自動注入Sidecar的命名空間 66
3.5 本章總結 67
中級篇
第4章 東西向流量管理 70
4.1 流量管理 70
4.1.1 術語 72
4.1.2 流量拆分與導向 72
4.1.3 Istio服務與Kubernetes服務 73
4.1.4 示例 76
4.2 實現東西向流量路由 83
4.2.1 自動 Sidecar 注入 84
4.2.2 部署 85
4.2.3 查看Ingress Gateway的地址 85
4.2.4 請求路由 86
4.3 實現流量鏡像及對比分析 89
4.3.1 流量鏡像 89
4.3.2 流量對比 89
4.3.3 創建用於Istio流量鏡像的服務 90
4.3.4 創建流量鏡像的Istio策略 92
4.3.5 搭建Diffy用於請求流量對比 93
4.3.6 傳送流量進行鏡像驗證 96
4.4 通過Istio管理套用的灰度發布 99
4.4.1 Kubernetes中的灰度發布 100
4.4.2 使用 Istio進行灰度發布 101
4.4.3 統一的流量路由規則 102
4.5 本章總結 103
第5章 南北向流量管理 104
5.1 Istio 網關 104
5.1.1 Istio網關的工作原理 104
5.1.2 Istio網關的負載均衡作用 105
5.1.3 入口網關服務 107
5.1.4 入口網關部署 107
5.1.5 網關資源 108
5.1.6 網關虛擬服務 109
5.1.7 調試入口網關 109
5.2 用HTTPS 加密網關 110
5.2.1 為入口網關配置TLS 111
5.2.2 創建示例服務 112
5.2.3 定義虛擬服務 112
5.2.4 通過網關請求示例服務 113
5.2.5 為多個主機配置 TLS入口網關 114
5.3 基於SNI的TLS路由 119
5.3.1 定義內部服務nginx 121
5.3.2 定義內部服務nginx2 122
5.3.3 部署網關 124
5.3.4 根據域名進行訪問 125
5.4 服務條目 126
5.4.1 服務條目基本原理 126
5.4.2 服務條目的定義參數 127
5.5 實現出口流量路由的統一管理 130
5.5.1 出口安全 130
5.5.2 創建客戶端 131
5.5.3 HTTP流量網關 131
5.5.4 HTTPS流量網關 133
5.5.5 出口流量的TLS發起 136
5.6 實現服務條目的DNS定址 137
5.6.1 CoreDNS 及其外掛程式工作機制 138
5.6.2 Kubernetes下的CoreDNS 139
5.6.3 部署Istio CoreDNS 140
5.6.4 更改集群CoreDNS配置 140
5.6.5 創建服務條目驗證DNS解析 141
5.7 本章總結 142
第6章 流量治理 144
6.1 使用流量策略 144
6.1.1 目標規則 144
6.1.2 流量策略 145
6.2 設定負載均衡 146
6.2.1 標準負載均衡算法 147
6.2.2 會話保持 147
6.2.3 示例 147
6.3 熔斷 150
6.3.1 連線池管理 151
6.3.2 異常檢測 152
6.3.3 創建示例服務 152
6.3.4 使用fortio觸發熔斷 154
6.4 服務重試 157
6.5 故障注入 160
6.6 命名空間隔離下的流量管理 165
6.6.1 Sidecar資源定義 165
6.6.2 示例 166
6.7 本章總結 169
第7章 安全 170
7.1 Istio安全架構 170
7.1.1 Istio身份模型 172
7.1.2 Istio公鑰基礎設施 172
7.1.3 Istio證書和密鑰輪換機制 173
7.2 剖析認證機制 173
7.2.1 認證架構 174
7.2.2 雙向TLS認證 175
7.2.3 認證策略 175
7.3 使用認證策略 175
7.3.1 Istio默認認證策略 177
7.3.2 認證策略示例 177
7.3.3 雙向認證策略檢查 180
7.4 使用自定義CA證書和密鑰 181
7.4.1 準備證書和密鑰 181
7.4.2 插入證書和密鑰 184
7.4.3 檢查新證書 185
7.5 使用cert-manager管理網關證書 186
7.5.1 生成簽名密鑰對 186
7.5.2 將簽名密鑰對保存為Secret 186
7.5.3 部署cert-manager 186
7.5.4 創建引用Secret的Issuer 187
7.5.5 獲得簽名證書 187
7.5.6 檢查證書與密鑰 188
7.5.7 部署自定義網關 189
7.5.8 定義Kubernetes服務 192
7.5.9 創建虛擬服務 194
7.6 剖析授權機制 196
7.6.1 啟用全局授權 197
7.6.2 Istio授權策略 197
7.6.3 授權策略示例 199
7.6.4 診斷授權策略 201
7.7 本章總結 206
第8章 Mixer的控制與觀測 207
8.1 Mixer架構設計 207
8.2 剖析適配器機制 209
8.2.1 屬性及表達式 209
8.2.2 配置模型 212
8.2.3 處理程式 212
8.2.4 示例 213
8.2.5 規則 214
8.3 指標數據收集 214
8.3.1 metric模板 214
8.3.2 Prometheus適配器的配置 215
8.3.3 監控指標 216
8.3.4 配置Istio收集指標 218
8.3.5 查詢Istio指標 220
8.3.6 可視化Istio指標 221
8.4 集成日誌數據收集 222
8.4.1 logentry模板 223
8.4.2 stdio適配器的配置 224
8.4.3 配置Istio日誌 225
8.4.4 查看日誌 226
8.4.5 安裝EFK軟體棧 227
8.4.6 為Fluentd適配器配置Istio資源 231
8.4.7 通過Kibana查看日誌 232
8.5 啟用基於Zipkin或Jaeger的分散式跟蹤 234
8.5.1 Istio跟蹤採樣率 235
8.5.2 部署套用示例 236
8.5.3 啟用Zipkin 238
8.5.4 啟用Jaeger 238
8.6 啟用速率限制策略 240
8.6.1 配額模板 240
8.6.2 速率限制配置 241
8.6.3 部署套用示例 243
8.7 啟用黑白名單策略 244
8.7.1 list適配器及模板 245
8.7.2 部署套用示例 246
8.7.3 部署適配器示例 246
8.7.4 校驗白名單策略 247
8.8 本章總結 248
高級篇
第9章 Istio穩定性與運維 250
9.1 Istio功能模組的穩定性與常見問題 250
9.1.1 可能的請求錯誤排查 252
9.1.2 證書有效期管理 254
9.1.3 使用SDS動態管理證書 257
9.2 Istio流量管理相關運維 258
9.2.1 路由規則對應用程式不生效 258
9.2.2 Sidecar是否注入 258
9.2.3 Istio配置參數最佳化 259
9.2.4 Envoy 無法連線 HTTP1.0 260
9.2.5 檢查Envoy與Pilot狀態差異 260
9.3 Istio組件升級與回滾 261
9.3.1 升級安裝檔案 261
9.3.2 CRD升級 262
9.3.3 控制平面升級 262
9.3.4 數據平面Sidecar升級 263
9.3.5 升級中的影響分析 264
9.4 本章總結 267
第10章 Istio定製與擴展 268
10.1 Mixer適配器擴展 268
10.2 實現適配器 270
10.3 編譯與打包適配器 283
10.4 Istio CNI外掛程式 287
10.4.1 安裝配置Istio CNI外掛程式 288
10.4.2 運行機制 289
10.4.3 驗證CNI外掛程式鏈配置 292
10.4.4 驗證iptables是否已修改 293
10.5 從Kubernetes擴展到虛擬機 294
10.5.1 格線擴展 294
10.5.2 生成Istio的配置cluster.env 297
10.5.3 生成DNS配置檔案kubedns 297
10.5.4 獲取Istio服務賬戶密鑰 298
10.5.5 在虛擬機上進行配置 298
10.5.6 部署套用示例到格線擴展 300
10.6 擴展Envoy過濾器 307
10.6.1 定義Envoy過濾器 307
10.6.2 部署示例套用 310
10.7 集成外部Zipkin兼容服務 312
10.7.1 集成部署 312
10.7.2 使用原生Zipkin 314
10.7.3 使用Zipkin兼容服務 315
10.8 本章總結 316
第11章 Knative:基於Istio的無伺服器計算 317
11.1 Knative架構解析 317
11.1.1 Knative Kubernetes +Istio 318
11.1.2 Knative的設計 319
11.1.3 安裝Knative 320
11.2 Knative Build運行機制 321
11.2.1 Knative Build資源定義 322
11.2.2 創建Knative Build示例 322
11.2.3 驗證使用Knative Build構建的鏡像 326
11.3 Knative Eventing運行機制 327
11.3.1 架構設計 327
11.3.2 創建Knative Eventing示例 329
11.3.3 驗證事件 331
11.4 基於Istio實現Serving組件 331
11.4.1 Knative Serving的設計 331
11.4.2 基於Serving實現source-to-
 URL部署 333
11.5 在Istio上部署配置Knative 336
11.6 基於Knative Serving的自動伸縮 337
11.6.1 路由與自動伸縮 338
11.6.2 自動伸縮機制 340
11.6.3 自動伸縮算法 341
11.6.4 基於Serving實現自動伸縮示例 343
11.6.5 使用藍綠部署路由和管理流量 345
11.7 本章總結 348
第12章 多集群管理 349
12.1 服務格線的未來 350
12.2 多集群部署管理 351
12.3 單控制平面VPN連線拓撲 351
12.3.1 前提約束 352
12.3.2 拓撲架構 352
12.3.3 啟用雙向TLS通信 354
12.3.4 部署本地控制平面 354
12.3.5 安裝istio-remote 356
12.3.6 部署示例套用 359
12.4 單控制平面Gateway連線拓撲 361
12.4.1 集群感知的服務路由 361
12.4.2 Istio控制平面組件 362
12.4.3 istio-remote組件 363
12.4.4 部署示例套用 365
12.5 多控制平面 366
12.5.1 部署控制平面 366
12.5.2 設定DNS 368
12.5.3 部署示例套用 369
12.5.4 跨集群的版本路由 371
12.6 本章總結 374

出版背景

我和本書作者王夕寧共事10多年,他以前就是SOA領域的技術專家,親歷了企業分散式架構演化的過程,在相關領域擁有眾多的全球技術專利。他在服務格線領域有非常深厚的理論功底和豐富的實踐經驗,負責了阿里雲服務格線技術的產品化過程。非常期待本書能幫助各位讀者更好地把握服務格線的技術精髓,並且靈活套用於自己的業務系統中。
——易立,阿里雲容器服務負責人,資深技術專家
本書作者王夕寧在阿里雲專職研究 Istio,對其技術架構和實戰細節都了如指掌。他的這本書從基礎入手,庖丁解牛,帶領大家了解技術理念與實現細節。後半部分,從能力與案例入手,高屋建瓴,帶領大家體會技術套用與實戰過程。本書適合所有對微服務和雲原生感興趣的讀者,推薦大家對本書進行深入的閱讀。
——李響,CNCF 技術監督委員會成員,阿里巴巴資深技術專家
本書以體系化、實操的形式介紹了Istio的方方面面,相信能幫助讀者更好地掌握當下服務格線這一前沿技術。
——李雲,阿里巴巴高級技術專家
Istio作為服務格線解決方案,為雲原生服務的部署運維提供了強有力的支持,這本技術書籍結合服務格線的使用場景為大家提供了深入淺出的教程,強烈建議雲原生的從業人員學習。
——姜寧,華為開源技術專家
Istio和Envoy是2020服務格線方向上最為主流、最為熱門的開源項目,在服務管理、安全、可觀測性方面提供了全面解決方案,很好地解決了傳統的多語言SDK方案維護難度大、升級困難、團隊協調管理困難等問題,並在安全和可觀測性方面更勝一籌。王夕寧的這本書全方位地介紹Istio相關知識,讀者可以很好地學習Istio的基礎知識、調試方法、生態體系和實際使用案例。建議大家能夠跟隨這本書逐步入門,學好Istio。
——吳晟,tetrate.io Founding Engineer
2019年是服務格線(Service Mesh)技術落地的關鍵年,Istio作為其中的佼佼者在落地選型上拔得頭籌,成為構建以Kubernetes為基礎的雲原生平台的關鍵技術,本書將帶領讀者跨越Istio落地的鴻溝,推薦有Kubernetes基礎和對雲原生技術感興趣的讀者閱讀。
—宋淨超,螞蟻金服雲原生布道師

作者簡介

王夕寧
阿里雲高級技術專家,阿里雲服務格線產品ASM及Istio on Kubernetes技術負責人,專注於Kubernetes、雲原生、服務格線等領域。曾在IBM中國開發中心工作,擔任過專利技術評審委員會主席,作為架構師和主要開發人員負責或參與了一系列在SOA中間件、雲計算、IoT等領域的開發工作,擁有40多項相關領域的國際技術專利。

相關詞條

熱門詞條

聯絡我們