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 Ingress是一個抽象層的設定,可以掌管Cluster從外到內的流量,以及路由的設定
Ingress-gateway是掌管Service Mesh架構的外到內流量。
Kubernetes Ingress及Istio-ingressgateway是可以同時存在並且沒有絕對相依,可以依據不同情竟做出不同的Gateway方式。
Kubernetes Service本身是針對Pod抽象層,而Istio VirtualService則是針對Service再做一層抽象,所以服務是必須完全納入Service Mesh 以及必須Service和VirtualService共同設定,否則LoadBalancer會無法生效。
Kubernetes Service的ExternalName是將外部服務註冊到Service,會由CoreDNS解析
Istio ServiceEntry的註冊則是會由Istio-egressgateway掌管由內到外的流量。
因此可以共存也可以擇一,可以依據不同的情境有不同的調整
目前對於Kubernetes和Istio的共同應用,有許多還是在摸索階段,目前會列出現在有碰到的狀況跟可以解決的方法。謝謝大家