全部產品
Search
文件中心

Microservices Engine:MSE Ingress概覽

更新時間:Nov 14, 2024

在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工作示意圖。

ingress的應用情境

安裝MSE Ingress Controller

說明

MSE Ingress Controller 支援在ACK 託管版,ACK Serverless和ACS 容器計算服務產品中安裝。

方式一:在建立Container Service或容器計算服務叢集時安裝MSE Ingress Controller

  • 建立ACK 託管版叢集和ACK Serverless叢集時,在組件配置階段的Ingress參數配置地區,選擇安裝MSE Ingress。關於建立叢集,請參見建立ACK託管叢集建立ACK Serverless 叢集

    image

  • 建立ACS叢集時,在組件配置地區的Ingress參數處,選擇安裝MSE Ingress。關於建立ACS叢集,請參見建立ACS叢集

    image

方式二:在Container Service或容器計算服務叢集組件管理頁面安裝MSE Ingress Controller

  1. ACK 託管版/ACK Serverless

    1. 登入Container Service管理主控台,在左側導覽列選擇叢集

    2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇營運管理 > 組件管理

    ACS

    1. 登入容器計算服務控制台,在左側導覽列選擇叢集

    2. 叢集頁面,單擊目的地組群ID,然後在左側導覽列,選擇營運管理組件管理

  2. 組件管理頁面的搜尋方塊中輸入mse搜尋,然後在MSE Ingress Controller組件卡片中單擊安裝

    image

方式三:在Container Service或容器計算服務叢集路由頁面安裝MSE Ingress Controller

ACK 託管版/ACK Serverless

  1. 登入Container Service管理主控台,在左側導覽列選擇叢集

  2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇網路 > 路由

  3. 路由頁面,單擊頁面的建立 Ingress,在建立 Ingress彈框中選擇網關類型MSE Ingress。在網關類型下方提示處單擊安裝組件

    image

ACS

  1. 登入容器計算服務控制台,在左側導覽列選擇叢集

  2. 叢集頁面,單擊目的地組群ID,然後在左側導覽列,選擇網路 > 路由

  3. 路由頁面,單擊頁面的建立 Ingress,在建立 Ingress彈框中選擇網關類型MSE Ingress。在網關類型下方提示處單擊安裝組件

    image

變更記錄

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日

  • Controller從應用市場下線。

  • 新增Controller前置授權。

  • 支援arm64架構。

此次升級不會對業務造成影響。

2023年06月

版本號碼

變更時間

變更內容

變更影響

1.1.3

2023年06月02日

  • 新增支援TLS硬體加速的地區檢測。

  • Controller副本數調整為1,降低成本。

此次升級不會對業務造成影響。

2023年03月

版本號碼

變更時間

變更內容

變更影響

1.1.2

2023年03月31日

收斂Controller的許可權。

此次升級不會對業務造成影響。

2022年12月

版本號碼

變更時間

變更內容

變更影響

1.1.0

2022年12月23日

Controller上線組件管理。

此次升級不會對業務造成影響。