《Istio實戰(zhàn)指南》是Istio服務(wù)網(wǎng)格技術(shù)的入門圖書。全書共分為9章,深入淺出地介紹了Istio的相關(guān)知識,結(jié)合大量的示例,清晰而詳細地闡述了Istio的主要特性。 《Istio實戰(zhàn)指南》的第1章介紹了服務(wù)網(wǎng)格的起源和發(fā)展,第2~4章介紹了Istio的基本概念和安裝。第5~8章,采用實例練習(xí)的方式詳細地介紹了Istio的流量管理、策略和遙測的配置、可視化工具的集成以及安全相關(guān)的特性。這部分是《Istio實戰(zhàn)指南》的重點,可以幫助讀者學(xué)以致用,把Istio應(yīng)用到真實的項目開發(fā)中。第9章是進階內(nèi)容,介紹了在云平臺集成Istio的方式、高級流量控制以及調(diào)試和故障排除的內(nèi)容。《Istio實戰(zhàn)指南》的附錄部分列舉了安裝選項、屬性詞匯表、表達式語言、適配器列表和istioctl命令,供讀者查閱參考。 《Istio實戰(zhàn)指南》適合有一定Kubernetes基礎(chǔ),對服務(wù)網(wǎng)格和Istio技術(shù)感興趣的開發(fā)人員和運維人員閱讀。
1.Service Mesher社區(qū)成員作品,作為Service Mesh的布道者,該社區(qū)成員對于Istio的了解和認知都具備一定的權(quán)-威性。 2.本書基于*-新的Istio 1.1版本寫作。 3.本書配套代碼可供讀者下載。 服務(wù)網(wǎng)格技術(shù)為現(xiàn)有的微服務(wù)架構(gòu)帶來了巨大的變革,開發(fā)人員只需要專注于核心業(yè)務(wù)邏輯相關(guān)的設(shè) 計開發(fā)工作,而不需要自己手動實現(xiàn)各種復(fù)雜的服務(wù)治理功能。作者結(jié)合自己在公司微服務(wù)化過程中的實踐經(jīng)驗,以淺顯易懂的方式介紹了 Istio 服務(wù)網(wǎng)格的重要知識點,并用大量實例展示了 Istio 的常用和重要的特點。作為一本 Istio 實用入門圖書,本書可以為初學(xué)的讀者提供快捷的入門和實踐指導(dǎo)。 王強 FreeWheel 研發(fā)副總裁 服務(wù)網(wǎng)格技術(shù)的出現(xiàn)很好地解決了微服務(wù)架構(gòu)中通信層面臨的痛點,而Istio 已然成為其中翹楚并得到開發(fā)人員的認可。本書以解決微服務(wù)的通信問題作為切入點,引入服務(wù)網(wǎng)格的概念,并通過一系列循序漸進的示例展示了 Istio 的主要功能和特性,可作為開發(fā)人員的入門參考。 徐昊 Thoughtworks 中國區(qū) CTO 服務(wù)網(wǎng)格技術(shù)是近兩年的前沿技術(shù),其中的代表之作 Istio 一經(jīng)推出就深受社區(qū)和開發(fā)人員的追捧。 本書面向?qū)W(wǎng)格技術(shù)感興趣并想要入門的開發(fā)人員。通過閱讀本書,讀者可以了解到與服務(wù)網(wǎng)格相關(guān)的理論知識以及 Istio 的架構(gòu)和技術(shù)特點,并通過書中大量的實例練習(xí)來掌握 Istio 豐富和實用的功能。 白伯純 前人人網(wǎng)架構(gòu)師
馬若飛,F(xiàn)reeWheel 主任軟件工程師,ServiceMesher 社區(qū)成員、譯者。擁有近 15年的軟件、互聯(lián)網(wǎng)行業(yè)從業(yè)經(jīng)驗,對分布式系統(tǒng)、微服務(wù)的開發(fā)和設(shè)計具有深刻的理解。目前在FreeWheel負責(zé)微服務(wù)相關(guān)的架構(gòu)設(shè)計和開發(fā)工作,熱衷于技術(shù)的探索與分享。
第 1章 服務(wù)網(wǎng)格 1
1.1 服務(wù)端架構(gòu)的發(fā)展從單體應(yīng)用到微服務(wù) 1
1.1.1 單體應(yīng)用 1
1.1.2 多層結(jié)構(gòu) 3
1.1.3 面向服務(wù)的架構(gòu) 4
1.1.4 微服務(wù)架構(gòu) 5
1.2 微服務(wù)架構(gòu)的痛點 6
1.3 服務(wù)網(wǎng)格的發(fā)展 7
1.3.1 耦合階段 7
1.3.2 封裝公用庫 8
1.3.3 Sidecar模式 9
1.3.4 服務(wù)網(wǎng)格出現(xiàn) 11
1.4 什么是服務(wù)網(wǎng)格 12
1.4.1 基本概念 12
1.4.2 服務(wù)網(wǎng)格的功能 12
1.5 服務(wù)網(wǎng)格產(chǎn)品介紹 14
1.5.1 Linkerd 14
1.5.2 Envoy 14
1.5.3 Istio 15
1.5.4 其他 16
1.6 小結(jié) 17
第 2章 Istio入門 18
2.1 什么是Istio 18
2.2 Istio的架構(gòu) 19
2.3 Istio的核心控件 20
2.3.1 Envoy 20
2.3.2 Pilot 21
2.3.3 Mixer 22
2.3.4 Citadel 23
2.3.5 Galley 23
2.4 Istio的主要功能 23
2.4.1 流量管理 23
2.4.2 策略和遙測 27
2.4.3 可視化 28
2.4.4 安全 28
2.5 小結(jié) 30
第3章 Istio的安裝和部署 32
3.1 準備工作 32
3.1.1 安裝Go語言 32
3.1.2 安裝Docker 35
3.1.3 Kubernetes平臺搭建 37
3.2 安裝Istio 42
3.2.1 下載安裝包 43
3.2.2 安裝Helm 43
3.2.3 使用Helm安裝Istio 44
3.2.4 確認安裝結(jié)果 47
3.2.5 問題處理 49
3.3 小結(jié) 50
第4章 Bookinfo應(yīng)用 51
4.1 什么是Bookinfo應(yīng)用 51
4.2 部署B(yǎng)ookinfo應(yīng)用 53
4.2.1 安裝和部署 53
4.2.2 默認目標(biāo)規(guī)則 61
4.3 小結(jié) 61
第5章 流量管理 63
5.1 流量管理中的規(guī)則配置 63
5.1.1 VirtualService 64
5.1.2 DestinationRule 67
5.1.3 ServiceEntry 68
5.1.4 Gateway 69
5.2 流量轉(zhuǎn)移 70
5.2.1 藍綠部署 70
5.2.2 金絲雀發(fā)布 76
5.2.3 A/B測試 79
5.3 超時和重試 80
5.3.1 超時 81
5.3.2 重試 83
5.4 控制入口流量 84
5.4.1 確定入口IP和端口 85
5.4.2 配置網(wǎng)關(guān) 86
5.5 控制出口流量 89
5.5.1 啟動Sleep服務(wù) 89
5.5.2 配置外部服務(wù) 90
5.5.3 配置外部HTTPS服務(wù) 92
5.5.4 為外部服務(wù)設(shè)置路由規(guī)則 93
5.6 熔斷 94
5.6.1 熔斷簡介 94
5.6.2 設(shè)置后端服務(wù) 95
5.6.3 設(shè)置客戶端 96
5.6.4 觸發(fā)熔斷機制 97
5.7 小結(jié) 99
第6章 策略與遙測 100
6.1 Mixer的工作原理 100
6.2 限流策略 103
6.2.1 Mixer配置項 104
6.2.2 客戶端配置項 105
6.2.3 有條件的限流 106
6.3 黑名單和白名單策略 107
6.3.1 初始化路由規(guī)則 107
6.3.2 用Denier適配器實現(xiàn)黑名單 108
6.3.3 用List適配器實現(xiàn)黑白名單 109
6.4 遙測 111
6.4.1 收集新的指標(biāo)數(shù)據(jù) 111
6.4.2 指標(biāo)配置解析 113
6.4.3 日志配置解析 114
6.4.4 用Prometheus查看指標(biāo) 114
6.5 小結(jié) 115
第7章 可視化工具 117
7.1 分布式追蹤 117
7.1.1 啟動Jaeger 118
7.1.2 生成追蹤數(shù)據(jù) 119
7.1.3 追蹤原理 120
7.2 使用Prometheus查詢指標(biāo) 121
7.2.1 Prometheus簡介 121
7.2.2 查詢Istio指標(biāo) 122
7.3 用Grafana監(jiān)控指標(biāo)數(shù)據(jù) 124
7.3.1 Grafana簡介 124
7.3.2 安裝Grafana 124
7.3.3 指標(biāo)數(shù)據(jù)展示 125
7.4 服務(wù)網(wǎng)格可視化工具Kiali 127
7.4.1 Kiali簡介 127
7.4.2 安裝和啟動Kiali 128
7.4.3 使用Kiali觀測服務(wù)網(wǎng)格 129
7.5 使用EFK收集和查看日志 132
7.5.1 集中式日志架構(gòu) 132
7.5.2 安裝EFK 133
7.5.3 用Kibana查看生成的日志 140
7.6 小結(jié) 142
第8章 安全 144
8.1 認證 144
8.1.1 Istio中的認證方式 144
8.1.2 認證策略 146
8.2 授權(quán) 149
8.2.1 啟用授權(quán) 149
8.2.2 授權(quán)策略 150
8.3 HTTP服務(wù)的訪問控制 152
8.3.1 準備工作 152
8.3.2 命名空間的訪問控制 154
8.3.3 服務(wù)級別的訪問控制 155
8.4 TCP服務(wù)的訪問控制 157
8.4.1 準備工作 157
8.4.2 啟動訪問控制 160
8.5 外部密鑰和證書 162
8.5.1 插入密鑰和證書 162
8.5.2 檢查新證書 163
8.6 小結(jié) 163
第9章 進階 165
9.1 云平臺集成 165
9.1.1 在Google Cloud GKE上啟用Istio 165
9.1.2 使用阿里云Kubernetes容器服務(wù) 169
9.2 高級流量控制 171
9.2.1 故障注入 171
9.2.2 流量鏡像 174
9.3 調(diào)試和故障排查 179
9.3.1 Istio組件的日志 180
9.3.2 調(diào)試 181
9.3.3 故障排查 183
9.4 小結(jié) 186
附錄 187
附錄A Helm安裝選項 187
A.1 certmanager選項 187
A.2 galley選項 188
A.3 gateways選項 188
A.4 global選項 191
A.5 grafana選項 194
A.6 Istio_cni選項 196
A.7 Istiocoredns選項 196
A.8 kiali選項 196
A.9 mixer選項 197
A.10 nodeagent選項 198
A.11 pilot選項 198
A.12 prometheus選項 199
A.13 security選項 200
A.14 servicegraph選項 200
A.15 sidecarInjectorWebhook選項 200
A.16 tracing選項 201
附錄B 屬性詞匯表 202
附錄C 表達式語言 205
附錄D 適配器列表 206
附錄E 命令行工具istioctl 207
E.1 istioctl authn 207
E.2 istioctl create 207
E.3 istioctl delete 208
E.4 istioctl deregister 208
E.5 istioctl gen-deploy 208
E.6 istioctl get 209
E.7 istioctl kube-inject 209
E.8 istioctl proxy-config 210
E.9 istioctl register 210
E.10 istioctl replace 210
E.11 istioctl version 210