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