《Istio實(shí)戰(zhàn)指南》是Istio服務(wù)網(wǎng)格技術(shù)的入門圖書。全書共分為9章,深入淺出地介紹了Istio的相關(guān)知識(shí),結(jié)合大量的示例,清晰而詳細(xì)地闡述了Istio的主要特性。 《Istio實(shí)戰(zhàn)指南》的第1章介紹了服務(wù)網(wǎng)格的起源和發(fā)展,第2~4章介紹了Istio的基本概念和安裝。第5~8章,采用實(shí)例練習(xí)的方式詳細(xì)地介紹了Istio的流量管理、策略和遙測(cè)的配置、可視化工具的集成以及安全相關(guān)的特性。這部分是《Istio實(shí)戰(zhàn)指南》的重點(diǎn),可以幫助讀者學(xué)以致用,把Istio應(yīng)用到真實(shí)的項(xiàng)目開發(fā)中。第9章是進(jìn)階內(nèi)容,介紹了在云平臺(tái)集成Istio的方式、高級(jí)流量控制以及調(diào)試和故障排除的內(nèi)容!禝stio實(shí)戰(zhàn)指南》的附錄部分列舉了安裝選項(xiàng)、屬性詞匯表、表達(dá)式語言、適配器列表和istioctl命令,供讀者查閱參考。 《Istio實(shí)戰(zhàn)指南》適合有一定Kubernetes基礎(chǔ),對(duì)服務(wù)網(wǎng)格和Istio技術(shù)感興趣的開發(fā)人員和運(yùn)維人員閱讀。
1.Service Mesher社區(qū)成員作品,作為Service Mesh的布道者,該社區(qū)成員對(duì)于Istio的了解和認(rèn)知都具備一定的權(quán)-威性。 2.本書基于*-新的Istio 1.1版本寫作。 3.本書配套代碼可供讀者下載。 服務(wù)網(wǎng)格技術(shù)為現(xiàn)有的微服務(wù)架構(gòu)帶來了巨大的變革,開發(fā)人員只需要專注于核心業(yè)務(wù)邏輯相關(guān)的設(shè) 計(jì)開發(fā)工作,而不需要自己手動(dòng)實(shí)現(xiàn)各種復(fù)雜的服務(wù)治理功能。作者結(jié)合自己在公司微服務(wù)化過程中的實(shí)踐經(jīng)驗(yàn),以淺顯易懂的方式介紹了 Istio 服務(wù)網(wǎng)格的重要知識(shí)點(diǎn),并用大量實(shí)例展示了 Istio 的常用和重要的特點(diǎn)。作為一本 Istio 實(shí)用入門圖書,本書可以為初學(xué)的讀者提供快捷的入門和實(shí)踐指導(dǎo)。 王強(qiáng) FreeWheel 研發(fā)副總裁 服務(wù)網(wǎng)格技術(shù)的出現(xiàn)很好地解決了微服務(wù)架構(gòu)中通信層面臨的痛點(diǎn),而Istio 已然成為其中翹楚并得到開發(fā)人員的認(rèn)可。本書以解決微服務(wù)的通信問題作為切入點(diǎn),引入服務(wù)網(wǎng)格的概念,并通過一系列循序漸進(jìn)的示例展示了 Istio 的主要功能和特性,可作為開發(fā)人員的入門參考。 徐昊 Thoughtworks 中國(guó)區(qū) CTO 服務(wù)網(wǎng)格技術(shù)是近兩年的前沿技術(shù),其中的代表之作 Istio 一經(jīng)推出就深受社區(qū)和開發(fā)人員的追捧。 本書面向?qū)W(wǎng)格技術(shù)感興趣并想要入門的開發(fā)人員。通過閱讀本書,讀者可以了解到與服務(wù)網(wǎng)格相關(guān)的理論知識(shí)以及 Istio 的架構(gòu)和技術(shù)特點(diǎn),并通過書中大量的實(shí)例練習(xí)來掌握 Istio 豐富和實(shí)用的功能。 白伯純 前人人網(wǎng)架構(gòu)師
馬若飛,F(xiàn)reeWheel 主任軟件工程師,ServiceMesher 社區(qū)成員、譯者。擁有近 15年的軟件、互聯(lián)網(wǎng)行業(yè)從業(yè)經(jīng)驗(yàn),對(duì)分布式系統(tǒng)、微服務(wù)的開發(fā)和設(shè)計(jì)具有深刻的理解。目前在FreeWheel負(fù)責(zé)微服務(wù)相關(guān)的架構(gòu)設(shè)計(jì)和開發(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)的痛點(diǎn) 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 策略和遙測(cè) 27
2.4.3 可視化 28
2.4.4 安全 28
2.5 小結(jié) 30
第3章 Istio的安裝和部署 32
3.1 準(zhǔn)備工作 32
3.1.1 安裝Go語言 32
3.1.2 安裝Docker 35
3.1.3 Kubernetes平臺(tái)搭建 37
3.2 安裝Istio 42
3.2.1 下載安裝包 43
3.2.2 安裝Helm 43
3.2.3 使用Helm安裝Istio 44
3.2.4 確認(rèn)安裝結(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 默認(rèn)目標(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 藍(lán)綠部署 70
5.2.2 金絲雀發(fā)布 76
5.2.3 A/B測(cè)試 79
5.3 超時(shí)和重試 80
5.3.1 超時(shí) 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 啟動(dòng)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 熔斷簡(jiǎn)介 94
5.6.2 設(shè)置后端服務(wù) 95
5.6.3 設(shè)置客戶端 96
5.6.4 觸發(fā)熔斷機(jī)制 97
5.7 小結(jié) 99
第6章 策略與遙測(cè) 100
6.1 Mixer的工作原理 100
6.2 限流策略 103
6.2.1 Mixer配置項(xiàng) 104
6.2.2 客戶端配置項(xiàng) 105
6.2.3 有條件的限流 106
6.3 黑名單和白名單策略 107
6.3.1 初始化路由規(guī)則 107
6.3.2 用Denier適配器實(shí)現(xiàn)黑名單 108
6.3.3 用List適配器實(shí)現(xiàn)黑白名單 109
6.4 遙測(cè) 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 啟動(dòng)Jaeger 118
7.1.2 生成追蹤數(shù)據(jù) 119
7.1.3 追蹤原理 120
7.2 使用Prometheus查詢指標(biāo) 121
7.2.1 Prometheus簡(jiǎn)介 121
7.2.2 查詢Istio指標(biāo) 122
7.3 用Grafana監(jiān)控指標(biāo)數(shù)據(jù) 124
7.3.1 Grafana簡(jiǎn)介 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簡(jiǎn)介 127
7.4.2 安裝和啟動(dòng)Kiali 128
7.4.3 使用Kiali觀測(cè)服務(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 認(rèn)證 144
8.1.1 Istio中的認(rèn)證方式 144
8.1.2 認(rèn)證策略 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 準(zhǔn)備工作 152
8.3.2 命名空間的訪問控制 154
8.3.3 服務(wù)級(jí)別的訪問控制 155
8.4 TCP服務(wù)的訪問控制 157
8.4.1 準(zhǔn)備工作 157
8.4.2 啟動(dòng)訪問控制 160
8.5 外部密鑰和證書 162
8.5.1 插入密鑰和證書 162
8.5.2 檢查新證書 163
8.6 小結(jié) 163
第9章 進(jìn)階 165
9.1 云平臺(tái)集成 165
9.1.1 在Google Cloud GKE上啟用Istio 165
9.1.2 使用阿里云Kubernetes容器服務(wù) 169
9.2 高級(jí)流量控制 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安裝選項(xiàng) 187
A.1 certmanager選項(xiàng) 187
A.2 galley選項(xiàng) 188
A.3 gateways選項(xiàng) 188
A.4 global選項(xiàng) 191
A.5 grafana選項(xiàng) 194
A.6 Istio_cni選項(xiàng) 196
A.7 Istiocoredns選項(xiàng) 196
A.8 kiali選項(xiàng) 196
A.9 mixer選項(xiàng) 197
A.10 nodeagent選項(xiàng) 198
A.11 pilot選項(xiàng) 198
A.12 prometheus選項(xiàng) 199
A.13 security選項(xiàng) 200
A.14 servicegraph選項(xiàng) 200
A.15 sidecarInjectorWebhook選項(xiàng) 200
A.16 tracing選項(xiàng) 201
附錄B 屬性詞匯表 202
附錄C 表達(dá)式語言 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