接下來來介紹 Istio 的架構
Istio 在邏輯上分為 Control Plane 和 Data Plane。
Control Plane 管理和設定來引導網路流量
Data Plane 是由 Side Car 的一組 Envoy 的智慧型網路代理所組成的,而這些代理與Mixer會一起控制為服務之間的所有網路通訊
下圖說明了組成Control Plane 及 Data Plane的各個元件:
Istio 架構
Istio 是使用 Envoy 網路代理的延伸版本。Envoy 是使用C++開發的高效能網路代理,可以幫助 Service Mesh 中的所有服務調節 Inbound 及 Outbound 的流量。
而Istio利用Envoy的許多內建的功能,例如:
Envoy 會被當成Side Car來部署,部署在微服務的同一個Kubernetes POD中,透過這樣的部署方式,Istio可以擷取有關流量資訊提供給Mixer元件,進而依此為依據來做出決策,再將他發送到 Monitoring 顯示出 Service Mesh 相關的訊息。
Mixer 是一個獨立於平台的元件,它可以跨 Service Mesh 來實現請求控制和使用策略,並從 Envoy 網路代理和其他元件蒐集觀測數據,並將其發送到 Mixer 進行評估。而 Mixer 擁有具靈活性的擴充元件模型,該模型使 Istio 可以與各種微服務進行互動。
Pilot 提供了 Envoy Side Car 的服務發現、智慧路由的流量管理功能(ex: A/B測試,金絲雀部署等)和彈性(ex: Timeout、Retry、Circuit Breaker 等),將控制流量的路由規則轉換成Envoy 的形式,並在運作時將其發送到Side Car。
Citadel 透過內建的憑證管理來實現微服務之間使用者的身分驗證,使用了 Citadel可以透過身分驗證的方式來實行路由策略
,而不是使用相對不穩定的第三層或第四層的 network identifiers。
Galley 是 Istio 負責設定的引入、處理及發送的工作,同時也負責將 Istio 的元件與底層平台取得的設定隔離開來。