Istio是一個提供串連、保護、控制以及觀測微服務功能的開放平台。

微服務目前被越來越多的IT企業重視。微服務是將複雜的應用切分為若干服務,每個服務均可以獨立開發、部署和伸縮;微服務和容器組合使用,可進一步簡化微服務的交付,提升應用的可靠性和延展性。

隨著微服務的大量應用,其構成的分布式應用架構在營運、調試、和安全管理等維度變得更加複雜,開發人員需要面臨更大的挑戰,如:服務發現、負載平衡、故障恢複、指標收集和監控,以及A/B測試、灰階發布、藍綠髮布、限流、存取控制、端到端認證等。

Istio應運而生。Istio是一個提供串連、保護、控制以及觀測微服務功能的開放平台,提供了一種簡單的建立微服務網路的方式,並提供負載平衡、服務間認證以及監控等能力,同時Istio不需要修改服務即可實現以上功能。

Istio提供如下功能:
  • 流量管理:控制服務之間的流量及API調用。增強系統的可靠性。
  • 鑒權及安全保護:為網格中的服務提供身分識別驗證,並保護服務的流量。增強系統的安全性。
  • 策略執行:控制服務之間的存取原則,且不需要改動服務。
  • 可觀察性: 擷取服務之間的流量分布及調用關係。 快速定位問題。

Istio架構

Istio在邏輯上分為控制層面和資料層面:
  • 控制層面:管理代理程式(預設為Envoy),用於管理流量路由、運行時策略執行等。
  • 資料層面:由一系列代理(預設為Envoy)組成,用於管理和控制服務之間的網路通訊。


Istio主要由以下組件構成:
  • Istio管理器(Pilot):負責收集和驗證配置,並將其傳播到各種Istio組件。它從策略執行模組(Mixer)和智能代理(Envoy)中抽取環境特定的實現細節,為他們提供使用者服務的抽象表示,獨立於底層平台。此外,流量管理規則(即通用4層規則和7層HTTP/gRPC路由規則)可以在運行時通過Pilot進行編程。
  • 策略執行模組(Mixer):負責在服務網格上執行存取控制和使用原則,並從智能代理(Envoy)和其他服務收集遙測資料。依據智能代理(Envoy)提供的屬性執行策略。
  • Istio安全模組:提供服務間以及使用者間的認證,確保在不需要修改服務代碼的前提下,增強服務之間的安全性。包括3個組件:
    • 身份識別:當Istio運行在Kubernetes時,根據容器Kubernetes提供的服務帳號,識別運行服務的主體。

    • Key管理:提供CA自動化產生和管理key和認證。

    • 通訊安全:通過智能代理(Envoy)在用戶端和服務端提供通道(tunnel)保證服務的安全性。

  • 智能代理(Envoy):作為一個獨立的組件與相關微服務部署在同一個Kubernetes的pod上,並提供一系列的屬性給策略執行模組(Mixer)。策略執行模組(Mixer)以此作為執行策略的依據,並發送到監控系統。