全部產品
Search
文件中心

Server Load Balancer:ALB Ingress功能操作指導

更新時間:Jun 19, 2024

ALB Ingress除了支援在Container ServiceACK/ACK Serverless等Kubernetes產品中使用,還支援與Enterprise Distributed Application Service(Enterprise Distributed Application Service)、Serverless應用引擎SAE(Serverless App Engine)、雲上自建Kubernetes叢集等相結合使用,以滿足您多樣化的業務需求。本文為您介紹ALB Ingress的基礎功能、進階功能以及與其他產品整合使用的操作指導。

基礎功能

AlbConfig是由ALB Ingress Controller提供的CRD資源,ALB Ingress Controller使用AlbConfig來配置ALB執行個體和監聽。下表為您介紹如何在容器ACK系列產品中安裝和卸載ALB Ingress Controller、如何建立與修改AlbConfig以及開啟Log Service等操作。

對象

功能

描述

Container ServiceACK文檔連結

Container ServiceACK Serverless文檔連結

ALB Ingress Controller

ALB Ingress Controller組件管理

Container Service基於ALB提供了託管的ALB Ingress Controller。

您可以通過在建立叢集時安裝ALB Ingress Controller,也可以通過在組件管理頁面安裝ALB Ingress Controller。

管理ALB Ingress Controller組件

管理ALB Ingress Controller組件

執行個體管理

建立AlbConfig

AlbConfig是在ALB Ingress Controller提供的CRD資源,使用AlbConfig CRD來配置ALB執行個體和監聽。

一個AlbConfig對應一個ALB執行個體,如果您需要使用多個ALB執行個體,可以通過建立多個AlbConfig實現。

建立AlbConfig

建立AlbConfig

關聯Ingress

AlbConfig通過K8s中標準的IngressClass資源與Ingress進行關聯。您需要先建立IngressClass,然後關聯AlbConfig。

建立IngressClass並關聯AlbConfig

使用IngressClass關聯AlbConfig與Ingress

修改AlbConfig

您可以修改AlbConfig的屬性,比如名稱、vSwitch配置等。

配置完成儲存後,新配置自動生效。

開啟Log Service訪問日誌

當您需要ALB Ingress能夠收集訪問日誌Access Log,您需要在AlbConfig中指定logProjectlogStore

說明
  • 當前Log Project需要您手動建立,不支援自動建立。建立Log Project的具體操作,請參見管理Project

  • logStore命名需要以alb_開頭,若指定logStore不存在,系統則會自動建立。

開啟Log Service訪問日誌

開啟Log Service訪問日誌

複用已有ALB執行個體

當您需要複用已有ALB執行個體,您只需要在建立AlbConfig時指定ALB執行個體ID即可。

複用已有ALB執行個體

複用已有ALB執行個體

使用多個ALB執行個體

當您需要使用多個ALB執行個體時,您可以在Ingress中通過spec.ingressClassName指定不同的IngressClass即可。

建立並使用多個ALB執行個體

建立並使用多個ALB執行個體

刪除ALB執行個體

一個ALB執行個體對應一個AlbConfig, 因此可以通過刪除AlbConfig實現刪除ALB執行個體,但前提是先需要刪除AlbConfig關聯的所有Ingress。

刪除ALB執行個體

刪除ALB執行個體

監聽管理

指定HTTPS認證

通過ALBConfig可以指定ALB認證,您可以通過配置ALBConfig的listeners來指定HTTPS的認證ID。

配置HTTPS認證以實現加密通訊

配置HTTPS認證以實現加密通訊

支援TLS安全性原則

當前ALBConfig配置HTTPS監聽時,支援指定TLS安全性原則。TLS安全性原則包含自訂策略和系統預設策略,更多資訊,請參見TLS安全性原則

指定TLS安全性原則

指定TLS安全性原則

進階功能

在Container ServiceACK叢集中,ALB Ingress對叢集服務(Service)中外部可訪問的API對象進行管理,提供七層負載平衡能力。下表為您介紹如何通過ALB Ingress將來自不同網域名稱或URL路徑的請求轉寄給不同的後端伺服器組、將HTTP訪問重新導向至HTTPS、灰階發布等功能。

功能

描述

Container ServiceACK文檔連結

Container ServiceACK Serverless文檔連結

基於網域名稱轉寄請求

建立一個簡單的Ingress,根據指定的正常網域名稱或空網域名稱轉寄請求。

基於網域名稱轉寄請求

基於網域名稱轉寄請求

基於URL路徑轉寄請求

ALB Ingress支援按照URL轉寄請求,可以通過pathType欄位設定不同的URL匹配策略。pathType支援Exact、ImplementationSpecific和Prefix三種匹配方式。

基於URL路徑轉寄請求

基於URL路徑轉寄請求

自訂轉寄規則

ALB Ingress支援自訂轉寄規則。轉寄規則包含轉寄條件和轉寄動作。通過ALB Ingress您可以

  • 自訂轉寄條件,指定請求的網域名稱、路徑、要求標頭、查詢字串、要求方法、Cookie、源IP等,可以在alb.ingress.kubernetes.io/conditions.<Service的名稱>註解中配置轉寄條件。

  • 自訂轉寄動作,配置固定響應、重新導向、插入要求標頭、流量鏡像、轉寄至後端多伺服器組和重寫等,可使用alb.ingress.kubernetes.io/actions.<服務名稱>註解配置轉寄動作。

  • 通過ACK控制台自訂轉寄條件,指定請求的網域名稱、路徑、HTTP標題。

  • 通過ACK控制台自訂轉寄動作,配置轉寄至、返回固定響應。

重要
  • 單條轉寄規則的轉寄條件的條目上限為10個,一旦達到規定數量上限,您將無法再添加更多的條件。

  • 轉寄條件ResponseHeader和ResponseStatusCode僅在自訂回應程式向轉寄規則中有效。

自訂ALB Ingress的轉寄規則

自訂ALB Ingress的轉寄規則

配置健全狀態檢查

ALB Ingress支援通過設定註解來配置健全狀態檢查,配置項包括path/protocol/method/httpcode/timeout/interval/threshold等。

配置健全狀態檢查

配置健全狀態檢查

配置自動探索HTTPS認證功能

ALB Ingress Controller提供認證自動探索功能。您需要首先在數位憑證管理服務控制台建立認證,然後ALB Ingress Controller會根據Ingress中TLS配置的網域名稱自動匹配發現認證。

配置HTTPS認證以實現加密通訊

配置HTTPS認證以實現加密通訊

配置HTTP重新導向至HTTPS

ALB Ingress通過設定註解alb.ingress.kubernetes.io/ssl-redirect: "true",可以將HTTP請求重新導向到HTTPS 443連接埠。

配置HTTP重新導向至HTTPS

配置HTTP重新導向至HTTPS

支援HTTPS和gRPC協議

當前ALB Ingress後端協議支援HTTPS和gRPC協議,通過ALB Ingress只需要在註解中配置alb.ingress.kubernetes.io/backend-protocol: "grpc"alb.ingress.kubernetes.io/backend-protocol: "https" 即可。使用Ingress轉寄gRPC服務需要對應網域名稱擁有SSL認證,使用TLS協議進行通訊。

說明

後端協議不支援修改,如果您需要變更協議,請刪除重建Ingress。

支援後端HTTPS和gRPC協議

支援後端HTTPS和gRPC協議

支援Rewrite重寫

當前ALB Ingress支援Rewrite重寫,通過ALB Ingress只需要在註解中配置alb.ingress.kubernetes.io/rewrite-target: /path/${2} 即可。

說明
  • rewrite-target註解中,${number}類型的擷取的群組變數需要在路徑為Prefix類型的path上配置。

  • path預設無法配置正則符號,例如*?等,您需要通過配置rewrite-target註解使用正則符號。

  • path必須以 / 開頭。

支援Rewrite重寫

支援Rewrite重寫

配置自訂監聽連接埠

支援Ingress配置自訂監聽連接埠。通過該方式,可以將服務同時暴露80連接埠和443連接埠。

配置自訂監聽連接埠

配置自訂監聽連接埠

配置轉寄規則優先順序

通過配置Ingress註解可以定義ALB Ingress轉寄規則優先順序。

說明

同一個監聽內規則優先順序必須唯一。alb.ingress.kubernetes.io/order用於標識Ingress之間的優先順序順序,取值範圍為1~1000,值越小表示優先順序越高。

配置轉寄規則優先順序

配置轉寄規則優先順序

通過註解實現灰階發布

ALB Ingress提供複雜路由處理能力,支援基於Header、Cookie以及權重的灰階發布功能。灰階發布功能可以通過設定註解來實現。

為了啟用灰階發布功能,需要設定註解alb.ingress.kubernetes.io/canary: "true",通過不同註解可以實現不同的灰階發布功能。

通過註解實現會話保持

ALB Ingress支援通過alb.ingress.kubernetes.io/sticky-sessionalb.ingress.kubernetes.io/sticky-session-type註解實現會話保持。

通過註解實現會話保持

通過註解實現會話保持

指定伺服器組負載平衡演算法

ALB Ingress支援通過設定Ingress註解alb.ingress.kubernetes.io/backend-scheduler指定伺服器組負載平衡演算法。

指定伺服器組負載平衡演算法

指定伺服器組負載平衡演算法

跨網域設定

ALB Ingress支援通過設定註解項配置跨域。

跨網域設定

跨網域設定

後端長連結

當使用短連結的方式訪問後端伺服器組時,每一條請求都需要經歷TCP層面的建立串連和中斷連線,使網路連接成為高效能系統的瓶頸。ALB支援開啟後端長連結,能夠極大的減少處理串連層面的資源消耗,從而大幅度提高處理效能。當前在ALB Ingress中可以通過註解alb.ingress.kubernetes.io/backend-keepalive開啟後端長連結。

後端長連結

後端長連結

支援QPS限速

ALB本身支援轉寄規則的QPS限速功能,QPS限速值取值範圍為1~100000。當前在ALB Ingress只需要設定alb.ingress.kubernetes.io/traffic-limit-qps註解即可。

支援QPS限速

支援QPS限速

  • 支援K8s與ECS混合掛載

  • 支援通過雲企業網轉寄路由器等產品的組合配置來掛載跨地區和線下IDC資源

  • ALB Ingress支援使用alb.ingress.kubernetes.io/actions.<服務名稱>註解配置後端轉寄伺服器組。後端轉寄伺服器組支援通過服務名稱或伺服器組ID掛載,實現K8s叢集內Pod和K8s叢集外ECS執行個體混合掛載。

  • 通過ALB和雲企業網CEN(Cloud Enterprise Network)、轉寄路由器等產品的組合配置,可以使ALB將請求轉寄至其他地區VPC內的伺服器或者本地IDC伺服器。

通過ALB Ingress實現混合掛載、跨地區掛載和本地IDC掛載

通過ALB Ingress實現混合掛載、跨地區掛載和本地IDC掛載

ALB Ingress生態整合

雲產品整合

雲產品

功能

描述

文檔連結

WAF

為ALB Ingress開啟WAF防護

Web Application FirewallWAF(Web Application Firewall)可以為網站或App提供一站式安全防護,防止資料泄密和惡意CC攻擊,阻止木馬上傳和網頁篡改,提供虛擬補丁。當ALB Ingress開啟WAF防護後,ALB執行個體監聽的連接埠流量將受到Web應用安全防護。

為ALB Ingress開啟WAF防護

EDAS

建立應用路由(ALB Ingress)

EDAS支援ALB Ingress應用路由,ALB Ingress基於阿里雲應用型負載平衡ALB(Application Load Balancer)提供更有效Ingress流量管理方式,同時相容Nginx Ingress,具備處理複雜業務路由和認證自動探索的能力。

建立應用路由(ALB Ingress)

SAE

基於Ingress網關實現全鏈路灰階

您可以通過ALB Ingress網關,在不需要修改您的任何業務代碼的情況下,為您的SAE應用實現全鏈路流量控制。

ASM

支援以Ingress方式與應用型負載平衡ALB整合。

阿里雲服務網格(Alibaba Cloud Service Mesh,簡稱ASM)支援以Ingress方式與應用型負載平衡ALB(Application Load Balancer)整合,滿足ALB使用者使用ASM的訴求。

ASM整合應用型Server Load Balancer執行個體ALB

HPA

支援以Ingress方式與應用型負載平衡ALB整合。

容器水平伸縮(Horizontal Pod Autoscaler,簡稱 HPA)是 Kubernetes 中實現 Pod 水平自動調整的功能。HPA支援以Ingress方式與應用型負載平衡ALB(Application Load Balancer)整合,實現基於QPS資料的應用Auto Scaling。

使用HPA基於QPS資料實現應用的Auto Scaling

Knative

支援在安裝了Knative組件的ACK或ACK Serverless叢集中,通過ALB來訪問服務。

Knative是一款基於Kubernetes的Serverless架構。支援通過Knative的方式配置ALB服務發現,實現Header和Cookie灰階發布功能。

在Knative中使用ALB網關

開源產品整合

開源產品

功能

描述

文檔連結

雲上自建K8s

支援在雲上自建的Kubernetes叢集中,通過Ingress方式使用ALB產品。

利用購置的ECS計算資源搭建的Kubernetes叢集,可以通過Ingress的方式編排ALB路由,實現叢集內服務的自動探索和負載平衡。

自建Kubernetes叢集使用ALB Ingress最佳實務