《Istio實戰指南》 by 馬若飛 2019年9月第1版
書中的 Istio 為 1.1版
---
索引
核心控件:Envoy、Pilot、Mixer、Citadel、Galley
主要功能:流量管理、政策和遙測、可視化、安全
Istio追求盡可能的透明,通過 各種解耦設計 讓系統對内對外都沒有依賴,還提供 高度的擴充性。
Istio 應用的增長和服務的增多,擴充政策系統 是 最主要的需求,以增量的方式進行擴充。
資料平面、控制平面分離
各個元件都成為插件
開放和包容的設計思路
1、Envoy
Istio資料平面 就是 代理。
Envoy作為 Sidecar代理。
一個為面向服務的架構而設計的7層代理和 通信總線,基于C++11。
将流量行為和資料提取出來發送給Mixer元件。
主要功能:
http 7層路由
grpc、http/2
服務發現 和 動态配置
健康檢查
進階負載均衡
英文:n. 使節,使者; 代表;
2、Pilot
實作流量管理的核心元件。
主要作用:配置和管理envoy代理。
設定代理之間特定的流量規則,配置逾時、重試、熔斷等。
流量行為的路由規則 轉換為 envoy配置 廣播到envoy
把服務發現機制抽象出來 并轉換成API分發給envoy
主要任務:
從平台(如K8S)擷取服務資訊,完成服務發現;
擷取istio的各項配置,轉換成envoy代理可讀的格式并分發。
Rules API
流量規則
Envoy API
動态更新LB 和 路由表的API
3、Mixer
主要功能:提供政策控制,并從envoy代理 收集 遙測資料。
每次網絡通信時,envoy代理 都會向 mixer發出 預檢要求,用來監測調用者的合法性。
調用後,envoy代理 會發送 遙測資料 提供mixer收集。
一般情況下 Sidecar代理 會緩存資料。
擴充卡 是 重要組成部分,插件模型。
部分擴充卡API:日志後端、限額後端、授權後端、遙測後端
自定義擴充卡
4、Citadel
與安全相關的元件,主要負責 密鑰和證書管理。
提供 服務間和終端使用者的身份認證,
加密服務網格中的流量。
英文:n. 城堡,要塞; 大學營,根據地,避難所; (軍艦上的)炮廓;
5、Galley
2019年3月釋出的1.1版本中。
istio主要的 配置管理元件,負責 配置的擷取、處理和分發。
MCP(Mesh Configuration Protocol,網格配置協定)
英文:n. 單層甲闆大帆船; 軍艦艦長用的大劃艇; (船艦,飛機上的)廚房; 活版盤,長條校樣;
1、流量管理
服務間通信》流量管理
金絲雀釋出
傳統:LB、Nginx、權重、對流量的管理和基礎設施綁定到一起、難以維護
istio:輕松實作 各種次元的流量控制
Pilot + Envoy元件實作:将流量 和 基礎設施解耦
pilot配置規則
envoy按照規則執行各種流量管理功能
功能:動态請求路由、逾時、重試、熔斷,故障注入-測試容錯
具體功能:請求路由、入口網關(Ingress)和出口網關(Egress)、服務發現和LB、故障處理、故障注入
K8S提供了 服務注冊的能力,Istio基于平台實作服務發現和LB。
envoy一整套故障處理機制:逾時、重試、限流、熔斷(限額呢?)
故障注入:在系統中認為地設定一些故障,來測試系統的穩定性和系統恢複的能力。Istio支援2種:延遲、中斷。
Envoy的LB池
2、政策和遙測
政策:限流(調用頻率、速率限制)、白名單和黑名單
Istio依靠 mixer完成。
預先檢查
名額資料的采集和和彙總——遙測功能
遙測:Telemetry,從遠端裝置中收集資料
各種名額(metric)資料,BI資料分析
Envoy代理 發送資料給 Mixer
接入不同的後端設定作為擴充卡:日志分析系統、監控系統
3、可視化
沒有完備的、可觀察的監控系統就無法保障系統的穩定性。
監控、追蹤工具
Grafana監控工具:Prometheus,名額資料
Jaeger作為追蹤系統:調用鍊跟蹤
Kibana系統:日志
4、安全
多個元件協同
Ctadel:密鑰和證書管理
Pilot:授權政策等資訊分發給Envoy代理
Envoy:根據政策實作服務間安全通信
Mixer:負責管理授權等工作
認證:istio的2種類型的身份認證——傳輸認證(服務間)、來源認證(最終使用者認證,驗證終端使用者或裝置,JWT(JSON Web Token)實作)
授權:沿用K8S的授權方式RBAC(Role-Based Access Control),不同級别的通路控制(命名空間級别、服務級别、方法級别)
Pilot + Envoy代理
Istio:
開源的S.M.産品,提供了統一的方式 管理流量、設定安全和監控等服務治理的能力。
資料平面、控制平面。各個元件充分解耦》優雅。第二代。