為了支援雲原生應用情境,MSE雲原生網關與Container Service for Kubernetes (ACK)進行了深度整合和最佳化,推出了MSE Ingress。MSE Ingress對叢集服務(Service)中外部可訪問的API對象進行管理,提供七層負載平衡能力,可以為ACK叢集提供更強大的叢集入口流量管理能力。
MSE Ingress基本概念
在Kubernetes叢集中,Ingress作為叢集內服務對外暴露的訪問存取點,幾乎承載著叢集內服務訪問的所有流量。Ingress是Kubernetes中的一個資來源物件,用於管理叢集外部存取叢集內部服務的方式。您可以通過Ingress資源來配置不同的轉寄規則,從而達到根據不同的規則設定訪問叢集內不同的Service所對應的後端Pod。
標準的Ingress資源僅支援配置HTTP流量的規則,無法配置一些進階特性,例如負載平衡的演算法、Sessions Affinity等。這些進階特性都需要由Ingress實現者(MSE Ingress、Nginx Ingress或ALB Ingress)提供支援。
MSE Ingress是在MSE雲原生網關之上提供更為強大的Ingress流量管理方式,相容Nginx Ingress以及50多個Nginx Ingress的註解,覆蓋90%以上的Nginx Ingress業務情境,支援多服務版本同時灰階發布、靈活的服務治理能力以及全方位的安全防護保障,能夠滿足大規模雲原生分布式應用的流量治理訴求。
MSE Ingress功能介紹
更多關於MSE Ingress雲原生網關的功能介紹,請參見:
MSE Ingress工作原理
組成部分
MSE Ingress Controller:
MSE Ingress Controller本身不是網路資料平面,它是管理MSE雲原生網關執行個體以及配置的控制平面。即MSE Ingress Controller不處理任何業務請求流量,它位於流量旁路,管理著處理業務流量的MSE雲原生網關執行個體。
您需要在ACK或者ACK Serverless叢集中安裝MSE Ingress Controller,通過使用該組件提供的MseIngressConfig的CRD資源以聲明式配置的方式來管理雲原生網關執行個體,以及設定網關對Ingress資源的監聽選項。
關於如何安裝MSE Ingress Controller組件,請參見管理MSE Ingress Controller組件。
MSE雲原生網關:由MSE Ingress Controller根據使用者配置的MseIngressConfig資源建立,包含控制面(Control Plane)和資料面(Data Plane)。
控制面(Control Plane):控制面監聽您已關聯的ACK叢集中的Ingress、IngressClass、Service等資源,經內部解析後即時下發給網關資料面。
資料面(Data Plane):資料面是流量治理配置的實施者,按照控制面下發的治理規則處理外部請求,並轉寄到後端目標服務。
工作原理
MSE Ingress Controller負責監聽叢集中建立的MseIngressConfig資源,即時動態維護該資源對應的雲原生網關執行個體的生命週期以及該網關與ACK叢集的關聯關係。
MSE雲原生網關的控制面通過關聯的ACK叢集的API Server擷取Ingress資源的變化,然後動態更新MSE雲原生網關的路由規則。當MSE雲原生網關收到請求時,匹配Ingress轉寄規則將請求轉寄到後端Service所對應的Pod。
Kubernetes中Service、Ingress、IngressClass、MseIngressConfig和MSE Ingress Controller存在以下關係:
Service:是後端真實服務的抽象,一個Service可以代表多個相同的後端服務。
Ingress:是反向 Proxy規則,用來規定HTTP和HTTPS請求應該被轉寄到哪個Service上。例如,根據請求中不同的Host和URL路徑,使請求轉寄到不同的Service上。
IngressClass:是Ingress處理器的描述,用於在K8s叢集中聲明一個Ingress處理器實現,關聯該IngressClass的Ingress資源會被該Ingress處理器解析。此外,需要通過IngressClass的Parameter欄位關聯一個MseIngressConfig(MSE雲原生網關),用於實施被解析的Ingress資源描述的流量管理規則。
MseIngressConfig:是由MSE Ingress Controller提供的CRD,用於描述雲原生網關執行個體的基本資料。
MSE Ingress Controller:本身不是網路資料平面,它是管理MSE雲原生網關執行個體以及配置的控制平面。MSE Ingress Controller負責監聽叢集中的MseIngressConfig資源,協調MSE雲原生網關執行個體用於實施Ingress資源描述的流量管理規則。
下圖是MSE Ingress Controller工作示意圖。