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

王夕寧

  • 出版商: 機械工業
  • 定價: $594
  • 售價: 8.5$505
  • 語言: 簡體中文
  • 裝訂: 平裝
  • ISBN: 7111644689
  • ISBN-13: 9787111644682
  • 已絕版

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

商品描述

本書介紹服務網格技術與Istio的開發實戰。全書分為三大篇-共12章。
初級篇包括1~3章-首先介紹Istio和服務網格的基本概念-并快速搭建Istio環境-部署個應用程序;
然後介紹Istio的整體架構。中級篇包括4~8章-介紹Istio在東西向、
南北向流量方面的路由控制能力-包括流量路由規則、流量鏡像等-以及流量治理方面的能力-包括流量策略、
負載均衡等;還介紹Istio安全方面的能力-以及Istio Mier的控制與觀測能力。
篇包括9~12章-介紹Istio的穩定性與運維經驗、Istio的定制與擴展、基於Istio的無服務器計算設計等;
後對雲原生技術的生態進行了介紹和未來展望-並展示瞭如何實現多雲環境下的多集部署。

作者簡介

王夕寧

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

目錄大綱

序一
序二
序三
前言
初級篇
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 Desk上搭建Istio環境22
2.2.1 安裝配置Docker Desk 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數據平面4​​5
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 定義內部服務ngin 121
5.3.2 定義內部服務ngin2 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章Mier的控制與觀測207
8.1 Mier架構設計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 Mier適配器擴展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
......