之前的教學裡,為了能快速測試應用程式,會使用 Kubectl port-forward
指令連接至服務,而正式環境中,我們要如何使用 Istio 將服務公開給使用者呢?本篇要介紹的 Istio Gateway 就能幫助你解決這個問題。
Istio Gateway 是 Istio 創建的 CRD (Custom Resource Definition),作為使用者進入 Kubernetes 應用程式的入口,實際上為一個負載均衡器,用來管理進出的 HTTP/TCP 請求。
將 Istio Gateway 部署到 Kubernetes 後,即可將外部流量導入內部應用程式
針對如何將服務公開的問題,Kubenetes 原生除了提供 Service 的 Nodeport
、LoadBalancer
功能之外,另一個常見的方式就是使用 Ingress,Ingress 是一種 Kubernetes 元件,可以將外部使用者的流量導入到內部的 Service。
Ingress 負責管理進入 Kubernetes 的外部流量,圖片取至 Kubernetes Ingress
看完 Ingress 與 Gateway 的介紹後,應該會覺得兩者的功能相似,都是將外部流量導入到內部,那究竟兩者有何不同呢?其實可以把 Gateway 想像成擁有 Service Mesh 功能的 Ingress,除了擁有 Ingress 的 Load Balancing
、Virtual Hosting
等功能之外,還可以結合 Service Mesh 提升對外部流量的 Traffic Management
、Observability
、Security
能力。
兩者的功能都是將外部流量導入到應用程式,不同點在於 Gateway 能在入口處設置 Envoy Proxy,將外部流量也加入 Service Mesh 的管理。
之後會講到的 Kiali 工具可以將 Microservices 流量可視化,使用 Istio Gateway 能將外部的流量加入 Service Mesh 的管理,不只能對流量做更細緻的管理,也能增加外部流量的可觀測性。圖片取至 Configure Istio Ingress Gateway
本篇了解完 Istio Gateway 的原理後,下一篇會介紹如何在 Kubernetes 安裝,並實際使用 Gateway 將服務公開。