ALB Ingress支援使用alb.ingress.kubernetes.io/actions.<服務名稱>
註解配置後端轉寄伺服器組。後端轉寄伺服器組支援通過服務名稱或伺服器組ID掛載,實現K8s叢集內Pod和叢集外ECS執行個體混合掛載。通過ALB和雲企業網CEN(Cloud Enterprise Network)轉寄路由器等產品的組合配置,可以使ALB將請求轉寄至其他地區VPC內的伺服器,實現跨地區掛載。或使ALB將請求轉寄到本地IDC伺服器,實現本地IDC掛載。本文介紹如何通過ALB Ingress實現混合掛載、跨地區掛載和本地IDC掛載。
索引
注意事項
alb.ingress.kubernetes.io/actions.<服務名稱>
註解中的服務名稱必須和rule
欄位backend
服務名稱保持一致。配置後端轉寄伺服器組時,
rule
欄位backend
下的服務連接埠名稱需要為use-annotation
。使用
alb.ingress.kubernetes.io/actions.<服務名稱>
註解支援將多個伺服器組掛載在ALB執行個體上。基礎版ALB執行個體最多掛載5個伺服器組。
同時通過
ServerGroupID
與ServiceName+ServicePort
掛載伺服器組時,優先根據ServerGroupID
匹配後端伺服器組。
情境一:請求轉寄至ACK或ACK Serverless叢集內多個Service
前提條件
已在所在地區建立Virtual Private Cloud1,並在VPC1內建立交換器VSW1和VSW2,且VSW1與VSW2處於不同可用性區域。具體操作,請參見建立和管理專用網路和建立和管理交換器。
已在VPC1內建立ACK或ACK Serverless叢集。具體操作,請參見建立Kubernetes託管版叢集、建立ACK Serverless叢集。
已在ACK或ACK Serverless叢集中安裝ALB Ingress Controller。具體操作,請參見管理ALB Ingress Controller組件。
已在ACK或ACK Serverless叢集,通過ALBConfig建立ALB執行個體,並部署
tea-svc
和coffee-svc
這兩個後端服務。具體操作,請參見ALB Ingress快速入門。
情境樣本
如下圖所示,ALB Ingress多伺服器組轉寄動作,支援通過配置ServiceName+ServicePort
建立或掛載多個後端伺服器組,將請求轉寄至叢集內多個Service。
操作步驟
配置ALB Ingress。
部署以下內容到
tea-ingress.yaml
檔案中。在定義請求服務時,將請求轉寄至叢集內多個Service。# 將請求根據主機名稱和路徑轉寄到不同的後端服務組,並按照權重進行流量分配。 apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: tea-ingress annotations: alb.ingress.kubernetes.io/actions.forward: | [{ "type": "ForwardGroup", "ForwardConfig": { "ServerGroups" : [{ "ServiceName": "tea-svc", "Weight": 80, "ServicePort": 80 }, { "ServiceName": "coffee-svc", "Weight": 20, "ServicePort": 80 }] } }] spec: ingressClassName: alb rules: - host: demo.domain.ingress.top http: paths: - path: /path pathType: Prefix backend: service: name: forward port: name: use-annotation
通過命令列方式訪問服務。具體操作,請參見訪問服務。
情境二:請求同時轉寄至ACK或ACK Serverless叢集內Pod及叢集外ECS
前提條件
已在所在地區建立Virtual Private Cloud1,具體操作,請參見建立和管理專用網路。
已在VPC1內建立ACK或ACK Serverless叢集。具體操作,請參見建立Kubernetes託管版叢集、建立ACK Serverless叢集。
已在ALB執行個體所在VPC1內建立至少一台Elastic Compute Service(Elastic Compute Service),並且在ECS中部署Web服務。具體操作,請參見自訂購買執行個體和手動部署LNMP環境(Alibaba Cloud Linux 2/3)。
已建立伺服器組。具體操作,請參見建立和管理伺服器組。
已將叢集外Elastic Compute Service添加到已建立的伺服器組中。具體操作,請參見建立和管理伺服器組。
已通過
alb.ingress.kubernetes.io/actions.<服務名稱>
註解配置轉寄動作,掛載已建立的伺服器組。
情境樣本
如下圖所示,ALB Ingress多伺服器組轉寄動作支援您在ALB控制台或OpenAPI建立伺服器組,將當前VPC網路中的ECS執行個體掛載在伺服器組,通過擷取伺服器組ID並在Ingress上配置,將請求同時轉寄至叢集內Pod和叢集外ECS,實現ECS執行個體和K8s叢集混合掛載。
操作步驟
配置ALB Ingress。
部署以下內容到
tea-ingress.yaml
檔案中。在定義請求服務時,同時將請求轉寄至叢集內Pod和叢集外ECS。apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: tea-ingress annotations: alb.ingress.kubernetes.io/actions.forward: | [{ "type": "ForwardGroup", "ForwardConfig": { "ServerGroups" : [{ "ServiceName": "tea-svc", "Weight": 30, "ServicePort": 80 }, { "ServiceName": "coffee-svc", "Weight": 20, "ServicePort": 80 }, { "ServerGroupID": "sgp-71aexb9y93ypo*****", "Weight": 30 }, { "ServerGroupID": "sgp-slygpbvm2cydo*****", "Weight": 20 }] } }] spec: ingressClassName: alb rules: - host: demo.domain.ingress.top http: paths: - path: /path pathType: Prefix backend: service: name: forward port: name: use-annotation
通過命令列方式訪問服務。具體操作,請參見訪問服務。
情境三:請求轉寄至叢集內Pod以及叢集外跨地區VPC上的ECS
前提條件
已分別在兩個不同的地區建立Virtual Private Cloud,並在VPC內建立處於不同可用性區域的交換器VSW。例如,在西南1(成都)地區建立Virtual Private Cloud1,在華東1(杭州)建立Virtual Private Cloud2。
在VPC1內建立交換器VSW1和VSW2。VSW1位於可用性區域A,VSW2位於可用性區域B。
在VPC2內建立交換器VSW3和VSW4。VSW3位於可用性區域H,VSW4位於可用性區域I。
已在VPC1內建立ACK或ACK Serverless叢集,並在ACK或ACK Serverless叢集通過ALBConfig建立ALB執行個體。具體操作,請參見建立Kubernetes託管版叢集和ALB Ingress快速入門。
已在VPC2內至少建立一台Elastic Compute Service(Elastic Compute Service),並且在ECS中部署Web服務。具體操作,請參見自訂購買執行個體和手動部署LNMP環境(Alibaba Cloud Linux 2/3)。
已在西南1(成都)和華東1(杭州)地區,分別建立轉寄路由器執行個體。具體操作,請參見建立轉寄路由器執行個體。
情境樣本
如下圖所示,ALB Ingress多伺服器組轉寄動作支援您在ALB控制台或OpenAPI建立伺服器組,通過雲企業網CEN建立跨地區VPC串連,將跨地區VPC網路中的ECS執行個體掛載在伺服器組。擷取伺服器組ID並在Ingress上配置,將請求同時轉寄至叢集內Pod和叢集外跨地區VPC上的ECS執行個體,實現跨地區掛載伺服器。
例如,ACK或ACK Serverless叢集已在阿里雲西南1(成都)地區VPC1專用網路中,通過ALB Config在該專用網路中建立ALB執行個體。使用者通過ALB、CEN等產品組合配置,將訪問請求轉寄至跨地區(阿里雲華東1(杭州)地區)線下VPC2內的ECS執行個體上。
操作步驟
配置雲企業網CEN,建立跨地區VPC串連。
具體操作,請參見使用ALB掛載跨地區VPC內的伺服器。
將跨地區VPC內Elastic Compute Service添加到ALB伺服器組中。
具體操作,請參見添加後端伺服器。
通過
alb.ingress.kubernetes.io/actions.<服務名稱>
註解配置轉寄動作,掛載已建立好的指定伺服器組。定義請求服務時,將請求轉寄至叢集內Pod及叢集外跨地區VPC的ECS伺服器。部署以下內容到
tea-ingress.yaml
檔案中。apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: tea-ingress annotations: alb.ingress.kubernetes.io/actions.forward: | [{ "type": "ForwardGroup", "ForwardConfig": { "ServerGroups" : [{ "ServiceName": "tea-svc", "Weight": 30, "ServicePort": 80 }, { "ServiceName": "coffee-svc", "Weight": 20, "ServicePort": 80 }, { "ServerGroupID": "sgp-71aexb9y93ypo*****", "Weight": 30 }, { "ServerGroupID": "sgp-slygpbvm2cydo*****", "Weight": 20 }] } }] spec: ingressClassName: alb rules: - host: demo.domain.ingress.top http: paths: - path: /path pathType: Prefix backend: service: name: forward port: name: use-annotation
情境四:請求轉寄至叢集內Pod及本地IDC伺服器
前提條件
已建立雲企業網執行個體,並為該雲企業網執行個體建立轉寄路由器執行個體。具體操作,請參見雲企業網執行個體和建立轉寄路由器執行個體。
已建立物理專線和邊界路由器VBR。具體操作,請參見建立和管理獨享專線串連和建立和管理邊界路由器。
注意事項
使用ALB掛載IDC伺服器的注意事項,請參見注意事項。
情境樣本
如下圖所示,ALB Ingress多伺服器組轉寄動作支援您在ALB控制台或OpenAPI建立伺服器組,通過雲企業網CEN物理專線和邊界路由器VBR,將本地IDC伺服器掛載在伺服器組中。擷取伺服器組ID並在Ingress上配置,將請求同時轉寄至叢集內Pod和線下IDC伺服器,實現線下掛載伺服器。
例如,ACK或ACK Serverless叢集在阿里雲西南1(成都)地區VPC1專用網路中,通過ALB Config在該專用網路中建立ALB執行個體。您可通過ALB、CEN、VBR物理專線等產品組合配置,將訪問請求轉寄至該地區的IDC伺服器中。如下圖所示。
操作步驟
配置雲企業網CEN,將ALB執行個體所在VPC1和VBR串連至轉寄路由器,本地IDC通過VBR接入阿里雲網路。具體操作,請參見使用ALB掛載同地區IDC伺服器。
通過
alb.ingress.kubernetes.io/actions.<服務名稱>
註解配置轉寄動作,掛載已建立好的指定伺服器組。定義請求服務時,將請求轉寄至叢集內Pod及叢集外線下IDC伺服器。部署以下內容到
tea-ingress.yaml
檔案中。apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: tea-ingress annotations: alb.ingress.kubernetes.io/actions.forward: | [{ "type": "ForwardGroup", "ForwardConfig": { "ServerGroups" : [{ "ServiceName": "tea-svc", "Weight": 30, "ServicePort": 80 }, { "ServiceName": "coffee-svc", "Weight": 20, "ServicePort": 80 }, { "ServerGroupID": "sgp-ihydxb9y93ypo*****", "Weight": 30 }, { "ServerGroupID": "sgp-pd0ipbvm2cydo*****", "Weight": 20 }] } }] spec: ingressClassName: alb rules: - host: demo.domain.ingress.top http: paths: - path: /path pathType: Prefix backend: service: name: forward port: name: use-annotation