istio sidecar流量接管_Istio 架构
Istio 服務網格被邏輯的區分為數據層和控制層。
數據層由一套作為 sidecars部署的智能代理(Envoy)組成,用于調節和控制微服務之間通信的所有流量。
控制層負責管理和配置策略用于路由流量,同時也在運行期執行策略。
下圖展示了組成每層的不同組件。
SideCar解釋
Sidecar 這個詞中文翻譯為邊車,或者車斗,也有一個鄉土氣息濃重的翻譯叫做邊三輪。Sidecar 這個東西出現的時間挺長的,它在原有的客戶端和服務端之間加多了一個代理。
Envoy
Istio 使用 Envoy 代理的擴展版本,一個使用 c++開發的高性能代理,為了調節在服務網格中所有服務的進出流量。Istio 利用了Envoy的許多內建特性,比如動態服務發現,負載均衡,TLS終止,HTTP/2 & gRPC 代理,斷路器,健康檢查,分階段的基于百分比的流量分配,故障注入和豐富的度量。
Envoy 作為一個 SideCar 部署與相關服務部署在相同的Kubernetes pod。這允許Istio提取大量流量行為的信號如Istio 屬性,反過來可以在Mixer使用執行策略決定,并被發送到監控系統來提供關于整個網格行為的信息。sidecar 代理模型允許你添加Istio能力到一個已經存在的部署而不需要重新構建或重新寫代碼。你可以在我們的設計目標中閱讀關于為什么我們選擇這種方式的更多的信息
Mixer
Mixer 是一個平臺無關的組件,負責執行訪問控制,跨服務網格使用策略,以及收集從Envoy代理和其他服務自動探測到的數據。代理提取請求等級屬性,被發送給Mixer用于計算。這個屬性提取更多的信息可以在Mixer 配置中找到,Mixer包含一個非常靈活的插件模型使其能夠和各種主機環境和后端基礎架構交互,從這些細節中抽象出Envoy代理和Istio管理的服務。
Pilot
Pilot為Envoy sidecar 提供了服務發現功能,為智能路由提供了流量管理能力(比如A/B測試,金絲雀發布等等),以及彈性(超時控制,重試,斷路器等等)。它轉換高級路由規則,將流量行為控制在Envoy特定的配置中,并且在運行期把他們傳播到sidecars。Pilot抽象特定平臺的服務發現方法,并將他們合成為可被任何sidecar消費的標準格式,其符合Envoy 數據層 API。這種松散的耦合允許Istio運行在多個環境中(比如,Kubernetes, Consul/Nomad等等),然而只需要維護相同操作接口進行流量管理。
Pilot 的架構圖
Envoy API 負責和 Envoy 的通訊, 主要是發送服務發現信息和流量控制規則給 Envoy
Envoy 提供服務發現,負載均衡池和路由表的動態更新的 API。這些 API 將 Istio 和 - Envoy 的實現解耦。(另外,也使得 Linkerd 之類的其他服務網絡實現得以平滑接管 Envoy)
Polit 定了一個抽象模型,以從特定平臺細節中解耦,為跨平臺提供基礎
Platform Adapter 則是這個抽象模型的現實實現版本, 用于對接外部的不同平臺
最后是 Rules API,提供接口給外部調用以管理 Pilot,包括命令行工具 Istioctl 以及未來可能出現的第三方管理界面
Istio 的流量管理:
Istio-Auth
Istio-Auth使用 mutual TLS提供強大的服務到服務的和終端用戶的身份認證,具有內置的身份和憑證管理。它可以用于升級在服務網格中未加密的流量,提供基于服務身份策略而不是網絡控制的執行能力。Istio 的未來版本將增加細粒度的訪問控制,審計控制以及監控誰訪問了你的服務、API或者資源,使用各種訪問控制機制,包括屬性和基于角色的訪問控制以及授權鉤子。
參考文檔:
總結
以上是生活随笔為你收集整理的istio sidecar流量接管_Istio 架构的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【论文阅读笔记】Real-Time Vi
- 下一篇: Oracle数据库安全-版本补丁版本计划