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
匹配后端服务器组。
场景一:请求转发至ACS集群内多个Service
前提条件
已在所在地域创建专有网络VPC1,并在VPC1内创建交换机VSW1和VSW2,且VSW1与VSW2处于不同可用区。具体操作,请参见创建和管理专有网络和创建和管理交换机。
已在VPC1内创建ACS集群。
已在ACS集群中安装ALB Ingress Controller。
已在ACS集群,通过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
通过命令行方式访问服务。具体操作,请参见访问服务。
场景二:请求同时转发至ACS集群内Pod及集群外ECS
前提条件
已在所在地域创建专有网络VPC1,具体操作,请参见创建和管理专有网络。
已在VPC1内创建ACS集群。
已在ALB实例所在VPC1内创建至少一台云服务器ECS(Elastic Compute Service),并且在ECS中部署Web服务。具体操作,请参见自定义购买实例和手动部署LNMP环境(Alibaba Cloud Linux 2/3)。
已创建服务器组。具体操作,请参见创建和管理服务器组。
已将集群外云服务器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内创建ACS集群,并在集群内通过ALBConfig创建ALB实例。
已在VPC2内至少创建一台云服务器ECS(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实例,实现跨地域挂载服务器。
例如,ACS集群已在阿里云西南1(成都)地域VPC1专有网络中,通过ALB Config在该专有网络中创建ALB实例。用户通过ALB、CEN等产品组合配置,将访问请求转发至跨地域(阿里云华东1(杭州)地域)线下VPC2内的ECS实例上。
操作步骤
配置云企业网CEN,创建跨地域VPC连接。
具体操作,请参见使用ALB挂载跨地域VPC内的服务器。
说明ALB Ingress用户无需在ALB控制台为ALB实例配置监听,在步骤3通过ALB Ingress配置监听。
将跨地域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服务器,实现线下挂载服务器。
例如,ACS集群在阿里云西南1(成都)地域VPC1专有网络中,通过ALB Config在该专有网络中创建ALB实例。您可以通过ALB、CEN、VBR物理专线等产品组合配置,将访问请求转发至该地域的IDC服务器中。如下图所示。
操作步骤
配置云企业网CEN,将ALB实例所在VPC1和VBR连接至转发路由器,本地IDC通过VBR接入阿里云网络。具体操作,请参见使用ALB挂载同地域IDC服务器。
说明ALB Ingress用户不需要在ALB控制台为ALB实例配置监听,在步骤2通过ALB Ingress配置监听。
通过
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