Istio有許多的設定,這邊會與Kubernetes的設定一起討論。
Service | kubernetes | istio | Envoy xDS |
---|---|---|---|
入口流量 | Ingress | Gateway | Listener |
服務定義 | Service | VirtualService | Cluster+Listener |
外部服務定義 | Service(ExternalName) | ServiceEntry | Cluster+Listener |
版本定義 | - | DestinationRule | Cluster+Listener |
版本路由 | - | VirtualService | Route |
實例 | Endpoint | - | Endpoint |
上面列出的是功能相近,但有可能在不同狀況下要多種設定。
先前已經有提到Kubernetes Service是Kubernetes Pod的抽象層,而VirtualService則是Service Mesh Istio的抽象層,至於我們如何要更仔細的去設定Route Rule,就是要靠VirtualService + DestinationRule,這兩者的結合可以有更多彈性上的應用。
在Istio要設定Url Route,不是單單只設定一個VirtualService就可以完成的,要從Gateway+VirtualService+DestinationRule三者皆有。才會有完整的Route Rule Setting。大部分都會少掉一兩個導致服務沒有完全被Service Mesh納管,或者是Service Mesh設定錯誤。
Kubernetes有EndPoint的概念,在Istio Service Mesh則是用VirtualService當作一個替代品,但是這個替代品還是無法完全取代Kubernetes Service,因此EndPoint還是不可少。否則VirtualService會無法正常的進行Pod Load Balancer。
在Istio可以使用許多Service Mesh的功能去達到Route等網路相關底層的設定,讓工程師比較少去管理,也有低衝擊性的情況發生,因為Istio目前還是採用Sidecar Pattern。後面就會正式啟用服務去講解Istio細節上的設定。