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
前提條件
已在所在地域創建專有網絡VPC1,并在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
前提條件
已在所在地域創建專有網絡VPC1,具體操作,請參見創建和管理專有網絡。
已在VPC1內創建ACK或ACK Serverless集群。具體操作,請參見創建Kubernetes托管版集群、創建ACK Serverless集群。
已在ALB實例所在VPC1內創建至少一臺云服務器ECS(Elastic Compute Service),并且在ECS中部署Web服務。具體操作,請參見自定義購買實例和手動部署LNMP環境(Alibaba Cloud Linux 2)。
已創建服務器組。具體操作,請參見創建和管理服務器組。
已將集群外云服務器ECS添加到已創建的服務器組中。具體操作,請參見創建和管理服務器組。
已通過
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
前提條件
已分別在兩個不同的地域創建專有網絡VPC,并在VPC內創建處于不同可用區的交換機VSW。例如,在西南1(成都)地域創建專有網絡VPC1,在華東1(杭州)創建專有網絡VPC2。
在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內至少創建一臺云服務器ECS(Elastic Compute Service),并且在ECS中部署Web服務。具體操作,請參見自定義購買實例和手動部署LNMP環境(Alibaba Cloud Linux 2)。
已在西南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內云服務器ECS添加到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