在Kubernetes集群中,Ingress對集群服務(Service)中外部可訪問的API對象進行管理,提供七層負載均衡能力。為了更好地支持云原生應用場景,MSE云原生網關與容器服務Kubernetes版 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使用說明
容器服務ACK托管版、ACK Serverless、ACS等Kubernetes產品,能夠借助MSE Ingress將集群外部流量路由到集群內部的Service,從而實現七層負載均衡功能。您需要在K8s集群中部署MSE Ingress Controller,該組件負責監聽MseIngressConfig資源,動態管理MSE云原生網關實例的生命周期、全局參數配置以及Ingress資源的監聽選項。由MSE云原生網關負責監聽和轉換K8s集群中的Ingress資源為自身所需的流量治理配置,完成內部服務對外暴露。具體操作,請參見通過MSE Ingress訪問容器服務和容器計算服務。
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):控制面監聽您已關聯的容器服務集群中的Ingress、IngressClass、Service等資源,經內部解析之后實時下發給網關數據面。
數據面(Data Plane): 數據面是流量治理配置的實施者,按照控制面下發的治理規則處理外部請求,并轉發到后端目標服務。
工作原理
MSE Ingress Controller負責監聽集群中創建的MseIngressConfig資源,實時動態維護該資源對應的云原生網關實例的生命周期以及該網關與容器服務集群的關聯性。
MSE云原生網關的控制面通過關聯的容器服務集群的API Server獲取Ingress資源的變化,然后動態更新MSE云原生網關的路由規則。當MSE云原生網關收到請求時,匹配Ingress轉發規則轉發請求到后端Service所對應的Pod。
Kubernetes中Service、Ingress、IngressClass、MseIngressConfig和MSE Ingress Controller存在以下關系:
Service:是后端真實服務的抽象,一個Service可以代表多個相同的后端服務。
Ingress:是反向代理規則,用來規定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 容器計算服務產品中安裝。
方式一:在創建容器服務或容器計算服務集群時安裝MSE Ingress Controller
創建ACK 托管版集群和ACK Serverless集群時,在組件配置階段的Ingress參數配置區域,選擇安裝MSE Ingress。關于創建集群,請參見創建ACK托管集群和創建ACK Serverless 集群。
創建ACS集群時,在組件配置區域的Ingress參數處,選擇安裝MSE Ingress。關于創建ACS集群,請參見創建ACS集群。
方式二:在容器服務或容器計算服務集群組件管理頁面安裝MSE Ingress Controller
方式三:在容器服務或容器計算服務集群路由頁面安裝MSE Ingress Controller
ACK 托管版/ACK Serverless
登錄容器服務管理控制臺,在左側導航欄選擇集群。
在集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇 。
在路由頁面,單擊頁面的創建 Ingress,在創建 Ingress彈框中選擇網關類型為MSE Ingress。在網關類型下方提示處單擊安裝組件。
ACS
登錄容器計算服務控制臺,在左側導航欄選擇集群。
在集群頁面,單擊目標集群ID,然后在左側導航欄,選擇網絡 > 路由。
在路由頁面,單擊頁面的創建 Ingress,在創建 Ingress彈框中選擇網關類型為MSE Ingress。在網關類型下方提示處單擊安裝組件。
變更記錄
2024年11月
版本號 | 變更時間 | 變更內容 | 變更影響 |
1.1.12 | 2024年11月01日 | 優化網關版本與容器產品 ACK/ASK/ACS 的匹配邏輯。 | 此次升級不會對業務造成影響。 |
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上線組件管理。 | 此次升級不會對業務造成影響。 |