在Kubernetes叢集中,Ingress對叢集服務(Service)中外部可訪問的API對象進行管理,提供七層負載平衡能力。為了更好地支援雲原生應用情境,MSE雲原生網關與Container ServiceKubernetes版 ACK(Container Service for Kubernetes)進行了深度整合和最佳化,推出了MSE Ingress,提供更強大的叢集入口流量管理能力。本文介紹MSE Ingress的基本概念、功能介紹、使用說明、工作原理和安裝說明。
MSE Ingress基本概念
在Kubernetes叢集中,Ingress作為叢集內服務對外暴露的訪問存取點,幾乎承載著叢集內服務訪問的所有流量。Ingress是Kubernetes中的一個資來源物件,用於管理叢集外部存取叢集內部服務的方式。您可以通過Ingress資源來配置不同的轉寄規則,從而達到根據不同的規則設定訪問叢集內不同的Service所對應的後端Pod。
標準的Ingress資源僅支援配置HTTP流量的規則,無法配置一些進階特性,例如負載平衡的演算法、Session Affinity等。這些進階特性都需要由Ingress實現者(Nginx Ingress、MSE Ingress)提供支援。
MSE Ingress是在MSE雲原生網關之上提供更為強大的Ingress流量管理方式,相容Nginx Ingress以及50多個Nginx Ingress的註解,覆蓋90%以上的Nginx Ingress業務情境,支援多服務版本同時灰階發布、靈活的服務治理能力以及全方位的安全防護保障,能夠滿足大規模雲原生分布式應用的流量治理訴求。
MSE Ingress功能介紹
更多關於MSE Ingress雲原生網關的功能介紹,請參見:
MSE Ingress使用說明
Container ServiceACK託管版、ACK Serverless、ACS等Kubernetes產品,能夠藉助MSE Ingress將叢集外部流量路由到叢集內部的Service,從而實現七層負載平衡功能。您需要在K8s叢集中部署MSE Ingress Controller,該組件負責監聽MseIngressConfig資源,動態管理MSE雲原生網關執行個體的生命週期、全域參數配置以及Ingress資源的監聽選項。由MSE雲原生網關負責監聽和轉換K8s叢集中的Ingress資源為自身所需的流量治理配置,完成內部服務對外暴露。具體操作,請參見通過MSE Ingress訪問Container Service和容器計算服務。
K8s標準的Ingress僅支援簡單的HTTP流量管理,高階能力通常用註解方式拓展。MSE Ingress在相容Nginx Ingress 註解的同時,推出了額外的註解來增強流量治理和安全防護能力。更多資訊,請參見MSE Ingress進階用法。
MSE Ingress工作原理
組成部分
MSE Ingress Controller:
MSE Ingress Controller本身不是網路資料平面,它是管理MSE雲原生網關執行個體以及配置的控制平面。即MSE Ingress Controller不處理任何業務請求流量,它位於流量旁路,管理著處理業務流量的MSE雲原生網關執行個體。
您需要在ACK 託管版/ACK Serverless 叢集/ACS 叢集中安裝MSE Ingress Controller,通過使用該組件提供的MseIngressConfig的CRD資源以聲明式配置的方式來管理雲原生網關執行個體,以及設定網關對Ingress資源的監聽選項。
關於如何安裝MSE Ingress Controller組件,請參見管理MSE Ingress Controller組件。
MSE雲原生網關:
MSE雲原生網關由MSE Ingress Controller根據使用者配置的MseIngressConfig資源建立,包含控制面(Control Plane)和資料面(Data Plane)。
控制面(Control Plane):控制面監聽您已關聯的Container Service叢集中的Ingress、IngressClass、Service等資源,經內部解析之後即時下發給網關資料面。
資料面(Data Plane): 資料面是流量治理配置的實施者,按照控制面下發的治理規則處理外部請求,並轉寄到後端目標服務。
工作原理
MSE Ingress Controller負責監聽叢集中建立的MseIngressConfig資源,即時動態維護該資源對應的雲原生網關執行個體的生命週期以及該網關與Container Service叢集的關聯性。
MSE雲原生網關的控制面通過關聯的Container Service叢集的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工作示意圖。
安裝MSE Ingress Controller
MSE Ingress Controller 支援在ACK 託管版,ACK Serverless和ACS 容器計算服務產品中安裝。
方式一:在建立Container Service或容器計算服務叢集時安裝MSE Ingress Controller
建立ACK 託管版叢集和ACK Serverless叢集時,在組件配置階段的Ingress參數配置地區,選擇安裝MSE Ingress。關於建立叢集,請參見建立ACK託管叢集和建立ACK Serverless 叢集。
建立ACS叢集時,在組件配置地區的Ingress參數處,選擇安裝MSE Ingress。關於建立ACS叢集,請參見建立ACS叢集。
方式二:在Container Service或容器計算服務叢集組件管理頁面安裝MSE Ingress Controller
ACK 託管版/ACK Serverless
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇 。
ACS
登入容器計算服務控制台,在左側導覽列選擇叢集。
在叢集頁面,單擊目的地組群ID,然後在左側導覽列,選擇營運管理 > 組件管理。
在組件管理頁面的搜尋方塊中輸入
mse
搜尋,然後在MSE Ingress Controller組件卡片中單擊安裝。
方式三:在Container Service或容器計算服務叢集路由頁面安裝MSE Ingress Controller
ACK 託管版/ACK Serverless
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇 。
在路由頁面,單擊頁面的建立 Ingress,在建立 Ingress彈框中選擇網關類型為MSE Ingress。在網關類型下方提示處單擊安裝組件。
ACS
登入容器計算服務控制台,在左側導覽列選擇叢集。
在叢集頁面,單擊目的地組群ID,然後在左側導覽列,選擇網路 > 路由。
在路由頁面,單擊頁面的建立 Ingress,在建立 Ingress彈框中選擇網關類型為MSE Ingress。在網關類型下方提示處單擊安裝組件。
變更記錄
2024年08月
版本號碼 | 變更時間 | 變更內容 | 變更影響 |
1.1.11 | 2024年08月16日 | 支援跨Region和VPC建立網關執行個體,支援OpenTelemetry鏈路追蹤。 | 此次升級不會對業務造成影響。 |
2024年07月
版本號碼 | 變更時間 | 變更內容 | 變更影響 |
1.1.10 | 2024年07月18日 | 最佳化網關Serverless版本的Ingress監聽。 | 此次升級不會對業務造成影響。 |
2024年06月
版本號碼 | 變更時間 | 變更內容 | 變更影響 |
1.1.9 | 2024年06月28日 | 支援ACS容器計算服務叢集,支援多可用性區域,支援建立網關Serverless執行個體。 | 此次升級不會對業務造成影響。 |
2023年11月
版本號碼 | 變更時間 | 變更內容 | 變更影響 |
1.1.7 | 2023年11月13日 | 調整安裝Controller時建立和複用MSE雲原生網關的全域參數。 | 此次升級不會對業務造成影響。 |
1.1.6 | 2023年11月07日 | 支援安裝Controller時建立和複用MSE雲原生網關。 | 此次升級不會對業務造成影響。 |
2023年08月
版本號碼 | 變更時間 | 變更內容 | 變更影響 |
1.1.5 | 2023年08月28日 | 最佳化Controller的授權邏輯。 | 此次升級不會對業務造成影響。 |
1.1.4 | 2023年08月16日 |
| 此次升級不會對業務造成影響。 |
2023年06月
版本號碼 | 變更時間 | 變更內容 | 變更影響 |
1.1.3 | 2023年06月02日 |
| 此次升級不會對業務造成影響。 |
2023年03月
版本號碼 | 變更時間 | 變更內容 | 變更影響 |
1.1.2 | 2023年03月31日 | 收斂Controller的許可權。 | 此次升級不會對業務造成影響。 |
2022年12月
版本號碼 | 變更時間 | 變更內容 | 變更影響 |
1.1.0 | 2022年12月23日 | Controller上線組件管理。 | 此次升級不會對業務造成影響。 |