Envoy 是 Istio 資料面的核心元件,已Sidecar的模式同應用部署在一個Pod中。
下圖展示了Envoy配置流程:

- Pilot-agent負責Envoy生命周期管理。它根據啟動參數和K8S API Server中的配置資訊生成Envoy的初始配置檔案envoy-rev0.json,該檔案告訴Envoy從xDS server中擷取動态配置資訊,并配置了xDS server的位址資訊,即控制面的Pilot。
- Pilot-agent使用envoy-rev0.json啟動Envoy程序。
- Envoy根據初始配置獲得Pilot位址,采用xDS接口從Pilot擷取到Listener,Cluster,Route等動态配置資訊。
- Envoy根據擷取到的動态配置啟動Listener,并根據Listener的配置,結合Route和Cluster對攔截到的流量進行處理。
Envoy通過xDS API進行動态配置。xDS是一類發現服務的總稱,包含LDS、RDS、CDS、EDS及SDS。
- LDS:Listener發現服務。Listener監聽器控制Envoy啟動端口監聽(目前隻支援TCP),并配置 L3或L4層過濾器,在網絡連接配接到達後,由網絡過濾器堆棧開始處理。
- RDS:Route發現服務,用于Envoy HTTP連接配接管理器動态擷取路由配置。路由配置包含HTTP頭修改(增加、删除HTTP頭鍵值)、Virtual Hosts(虛拟主機)及Virtual Hosts定義的各個路由條目。
- CDS:Cluster發現服務,用于動态擷取Cluster資訊。Envoy Cluster管理器管理着所有的上遊Cluster。Envoy從Listener(針對TCP協定)或Route(針對HTTP)中抽象出上遊Cluster,作為流量轉發目标。
- EDS:Endpoint發現服務。對于每個Cluster,Envoy通過EDS API動态擷取Endpoint。
- SDS:Secret發現服務,用于在運作時動态擷取TLS證書。