自定义ALB Ingress的转发规则
ALB Ingress支持自定义转发规则。转发规则包含转发条件和转发动作。您可以自定义转发条件,指定请求的域名、路径、请求头、查询字符串、请求方法、Cookie、源IP等。您也可以自定义转发动作,配置固定响应、重定向、插入请求头、删除请求头、流量镜像、转发至后端多服务器组和重写。本文介绍如何自定义ALB Ingress的转发规则。
前提条件
已安装ALB Ingress Controller组件,且组件为v2.5.0及以上版本。
控制台设置自定义转发规则功能,目前处于灰度发布中,如需使用,请提交工单申请。
转发条件
转发规则的条件条目上限为10个,一旦达到规定数量上限,您将无法再添加更多的条件。
转发条件ResponseHeader和ResponseStatusCode仅在自定义响应方向转发规则中有效。
转发条件介绍
ALB Ingress支持在alb.ingress.kubernetes.io/conditions.<Service的名称>
注解中配置转发条件。不同的路由规则块之间是与的关系,同一个路由规则块中的值是或的关系,例如,如果是两个不同的Header规则块,那么这两个规则块是与的关系,但是同一个Header规则块中设置的值是或的关系。详细的路由规则说明如下。
转发条件 | 描述 |
域名 | 匹配请求域名,只有正确的域名的请求才能访问服务。示例如下。
|
路径 | 匹配请求路径,只有正确的路径的请求才能访问服务。示例如下。
|
Header | 匹配请求Header,只有正确的Header的请求才能访问服务。示例如下。
|
查询字符串 | 匹配查询字符串, 只有包含正确的查询字符串的请求才能访问服务。示例如下。
|
请求方法 | 匹配请求方法,只有正确的请求方法的请求才能访问服务。示例如下。
|
Cookie | 匹配Cookie,只有包含正确的Cookie的请求才能访问服务。示例如下。
|
SourceIP | 匹配请求源IP,只有正确的源IP的请求才能访问服务。示例如下。
|
ResponseHeader | 匹配响应Header,只对携带正确的Header的响应执行转发动作。示例如下。
|
ResponseStatusCode | 匹配响应状态码,只有返回正确的状态码才能访问服务。示例如下。
|
场景一:基于SourceIP和Header实现流量分发
同一条转发规则的自定义条件设置的SourceIp数量限制为5个。
以下代码块定义了仅当请求的IP、Header和路径符合配置时,才能实现目标流量分发。
即当请求源IP为192.168.0.0/16或172.16.0.0/16中的IP地址,请求Header中包含gray-hello,值必须为value1或value2,请求路径为/hello,请求才能路由到gray-hello服务,否则将路由到其他服务。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
alb.ingress.kubernetes.io/order: "1"
alb.ingress.kubernetes.io/conditions.gray-hello: |
[{
"type": "Header",
"headerConfig": {
"key":"gray-hello",
"values": [
"value1",
"value2"
]
}
},
{
"type": "SourceIp",
"sourceIpConfig": {
"values": [
"192.168.0.0/16",
"172.16.0.0/16"
]
}
}]
name: gray-hello
spec:
ingressClassName: alb
rules:
- http:
paths:
- path: /hello
pathType: ImplementationSpecific
backend:
service:
name: gray-hello
port:
number: 88
alb.ingress.kubernetes.io/order:标识Ingress的优先级,数字越小,优先级越高。
场景二:基于域名、请求方法、Cookie实现流量分发
以下代码块定义了只有当请求的域名、请求方法和Cookie符合配置时,才能实现目标流量分发。
即当请求方法为GET或HEAD,请求域名为www.hostvalue1.edu或www.hostvalue2.edu,请求Cookie的键为cookiekey1,值为cookievalue1,请求路径为/test时,请求才能路由到service-a服务,否则将路由到service-b服务。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
alb.ingress.kubernetes.io/conditions.service-a: |
[{
"type": "Cookie",
"cookieConfig": {
"values": [
{
"key":"cookiekey1",
"value":"cookievalue1"
}
]
}
},
{
"type": "Method",
"methodConfig": {
"values": [
"GET",
"HEAD"
]
}
},
{
"type": "Host",
"hostConfig": {
"values": [
"www.hostvalue1.edu",
"www.hostvalue2.edu"
]
}
}]
name: ingress-example
spec:
ingressClassName: alb
rules:
- http:
paths:
- path: /test
pathType: ImplementationSpecific
backend:
service:
name: service-a
port:
number: 88
- path: /test
pathType: ImplementationSpecific
backend:
service:
name: service-b
port:
number: 88
场景三:基于查询字符串、多个Header、多个路径实现流量分发
以下代码块定义了只有当请求的查询字符串、Header、路径符合配置时,才能实现目标流量分发。
即当请求路径是/pathvalue1、/pathvalue2或/test,查询字符串的键为querystringkey1,值为querystringvalue2,请求Header中必须包含headerkey1和headerkey2,请求Header中包含headerkey1,值必须为headervalue1或headervalue2,请求Header包含headerkey2,值必须为headervalue3或headervalue4,才能路由到service-a服务,否则将路由到service-b服务。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
alb.ingress.kubernetes.io/conditions.service-a: |
[{
"type": "Path",
"pathConfig": {
"values": [
"/pathvalue1",
"/pathvalue2"
]
}
},
{
"type": "QueryString",
"queryStringConfig": {
"values": [
{
"key":"querystringkey1",
"value":"querystringvalue2"
}
]
}
},
{
"type": "Header",
"headerConfig": {
"key":"headerkey1",
"values": [
"headervalue1",
"headervalue2"
]
}
},
{
"type": "Header",
"headerConfig": {
"key":"headerkey2",
"values": [
"headervalue3",
"headervalue4"
]
}
}]
name: ingress-example
spec:
ingressClassName: alb
rules:
- http:
paths:
- path: /test
pathType: ImplementationSpecific
backend:
service:
name: service-a
port:
number: 88
- path: /test
pathType: ImplementationSpecific
backend:
service:
name: service-b
port:
number: 88
转发动作
转发动作介绍
ALB Ingress支持使用alb.ingress.kubernetes.io/actions.<服务名称>
注解配置请求方向和响应方向的转发动作。支持固定响应、重定向、插入请求头、删除请求头、流量镜像、转发至后端多服务器组和重写。通过定义这些转发动作,您可以在ALB Ingress中灵活地管理请求和响应的转发规则。
alb.ingress.kubernetes.io/actions.<服务名称>
注解中的服务名称必须和rule
字段backend
下的服务名称一致。在同一条转发规则中,重定向、固定响应、转发至多服务器组等终结类型的转发动作不能同时使用。
配置重定向、固定响应、转发至多服务器组时,
rule
字段backend
下的servicePort的名称必须为use-annotation。
请求方向的转发动作
转发动作 | 描述 |
固定响应 | 设置通过ALB给客户端返回固定响应内容,可以设置响应状态码,正文内容和正文类型。示例如下。
|
重定向 | 通过HTTP 3xx状态码,指导客户端跳转到其他地址访问服务。示例如下。 重要 除了httpCode,重定向的其他参数不能都设置为默认值。
|
流量镜像 | 设置流量镜像转发服务器组ID,将复制请求转发至流量镜像服务器组。示例如下。 重要
|
转发至后端多服务器组 | 设置将ALB请求转发至后端多个服务器组,可以通过ServerGroupID指定后端挂载的服务器组,也可以通过ServiceName+ServicePort创建或挂载服务器组。可以设置请求转发至各后端服务器组的权重。示例如下。 重要
|
重写 | 设置ALB支持重写,将覆盖请求的域名、路径和字符串。示例如下。 重要
更多Rewrite重写规则,请参见支持Rewrite重写。 |
插入请求头 | 设置头字段名称和头字段内容,将覆盖请求中已有的头变量。示例如下。
|
删除请求头 | 删除头字段名称和头字段内容。示例如下。
|
QPS限速 | 设置ALB的转发规则时,可以同时配置总体请求速率限制和基于客户端源IP的请求速率限制。 具体配置示例如下: 重要
|
响应方向的转发动作
转发动作 | 描述 |
插入请求头 | 设置头字段名称和头字段内容,将覆盖请求中已有的头变量。示例如下。
|
删除请求头 | 删除头字段名称和头字段内容。示例如下。
|
场景一:设置固定响应503状态码和内容
通过控制台设定
登录容器计算服务控制台,在左侧导航栏选择集群。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择 。
在路由页面,单击创建 Ingress,在创建 Ingress对话框配置路由。
配置项
说明
示例值
网关类型
可按需选择ALB应用负载均衡和Nginx两种网关类型。
ALB应用负载均衡
名称
自定义路由名称。
ingress
Ingress Class
自定义Ingress的类。
alb
监听/端口
在AlbConfig中定义ALB的监听端口和协议,规定了流量进入负载均衡方式和处理规则。
HTTP:80
规则
单击+ 添加规则可新增多个路由规则。
域名:自定义域名。
路径映射:配置如下配置项。
路径:指定服务访问的URL路径。本例中不做配置,保留根路径/。
匹配规则:支持前缀匹配(Prefix)、完整匹配(Exact)和默认(ImplementationSpecific)。
服务名称:选择目标服务,即K8s内的Service。
端口:选择服务需要暴露的端口。
Ingress支持同一个域名下配置多条路径。单击+ 添加路径新增路径。
域名:不填写
路径映射:
路径:/
匹配规则:默认(前缀匹配Prefix)
服务名称:response-503
端口:80
TLS配置
开启TLS配置开关,配置安全的路由服务。
域名:自定义域名。
保密字典:根据需要选择对应的保密字典。
关闭TLS配置,此示例中不需要配置TLS。
更多配置
灰度发布:开启灰度发布开关。灰度规则可按照请求头、Cookie 、权重三个维度进行设置。
说明请求头、Cookie 、权重可以只设置一种,若同时设置生效规则按请求头、Cookie、权重顺序匹配。
按请求头:基于Request Header的流量切分,设置后会添加注解
nginx.ingress.kubernetes.io/canary-by-header
、nginx.ingress.kubernetes.io/canary-by-header-value
或nginx.ingress.kubernetes.io/canary-by-header-pattern
。按Cookie:基于Cookie的流量切分,设置后会添加注解
nginx.ingress.kubernetes.io/canary-by-cookie
。按权重:设置请求到指定服务的百分比(值为0~100的整数),设置后会添加注解
nginx.ingress.kubernetes.io/canary-weight
。
协议:指定后端服务的协议,设置后会添加注解
nginx.ingress.kubernetes.io/backend-protocol
。支持HTTP、HTTPS、gRPC、gRPCS四种服务协议。
重写路径:将客户端请求中的路径重写后发送到后端服务,设置后会添加注解
nginx.ingress.kubernetes.io/rewrite-target
。
关闭灰度发布,协议和重写路径保持默认。此示例中不需要配置灰度发布、协议、重新路径。
自定义转发规则
说明控制台自定义转发规则功能,目前处于灰度发布中。如需使用,请提交工单申请。
开启自定义转发规则,可精细化管理入站流量。
说明转发规则的条件条目上限为10个。
在转发条件下拉框中选择:
域名:
匹配请求域名,如果设置了多个域名,则域名之间是或的关系。设置后会添加注释
alb.ingress.kubernetes.io/conditions.host-example
。路径:
匹配请求路径,如果设置了多个路径,则路径之间是或的关系。设置后会添加注释
alb.ingress.kubernetes.io/conditions.path-example
。HTTP标头:
以键值对形式匹配请求的头部信息。例如,键是:
headername
值是:headervalue1
。如果设置了多个Header值,则Header之间是或的关系。设置后会添加注释alb.ingress.kubernetes.io/conditions.http-header-example
。
在转发动作下拉框中选择:
转发至
转发到后端多服务器组。在服务名称中,请选择目标服务。在端口中,选择目标端口号。然后自定义配置权重值。
说明如果是Flannel网络插件集群则不支持ClusterIP类型服务。
选择转发至,就不需要配置规则中的路径映射。
返回固定响应
设置通过ALB给客户端返回固定响应内容,可以设置响应状态码,正文内容和正文类型。按需求配置响应状态码,响应正文类型(可选)、响应正文(可选)。
响应正文类型:
text/plain:表示无格式的内容类型。
text/css:表示XML格式的内容。
text/html:表示HTML格式的内容。
application/javascript:表示JavaScript格式的内容。
application/json:表示JSON格式内容类型。
自定义转发规则支持多种转发条件及转发动作,您可以配置域名、路径、HTTP标头转发条件,转发至、返回固定响应的转发动作。
转发条件:选择路径。(保持默认)
转发动作:返回固响应
响应状态码:503
响应正文类型(可选):text/plain
响应正文(可选):error
注解
您可自定义注解名称和值,也可根据名称选择或搜索要配置的注解。Ingress的注解请参见ALB Ingress配置词典。
单击+添加注解,可对Ingress无上限地添加注解。
无需配置,此示例不需要配置注解。
标签
标签的作用是为Ingress添加对应的标签,标示该Ingress的特点。
单击+添加标签,可对Ingress无上限地添加标签。
无需配置,此示例不需要配置标签。
配置成功后,单击确定。
通过kubectl设定
以下代码块定义了请求服务时,将返回503状态码和503 error text
。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
namespace: default
name: ingress
annotations:
alb.ingress.kubernetes.io/actions.response-503: |
[{
"type": "FixedResponse",
"FixedResponseConfig": {
"contentType": "text/plain",
"httpCode": "503",
"content": "503 error text"
}
}]
spec:
ingressClassName: alb
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: response-503
port:
name: use-annotation # servicePort的名称必须为use-annotation。
场景二:使用301重定向到HTTPS端口
以下代码块定义了请求服务时,将重定向到服务的HTTPS端口。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
namespace: default
name: ingress
annotations:
alb.ingress.kubernetes.io/actions.redirect: |
[{
"type": "Redirect",
"RedirectConfig": {
"host": "${host}",
"path": "${path}",
"port": "${port}",
"protocol": "https",
"query": "${query}",
"httpCode": "301"
}
}]
spec:
ingressClassName: alb
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: redirect
port:
name: use-annotation # servicePort的名称必须为use-annotation。
场景三:插入source: alibaba请求头
以下代码块定义了请求服务时,将使用source: alibaba覆盖原有请求头。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
namespace: default
name: ingress
annotations:
# 注解中的服务为集群中事实存在的服务,且服务名称必须和rule字段backend下的服务名称一致。
alb.ingress.kubernetes.io/actions.insert-header: |
[{
"type": "InsertHeader",
"InsertHeaderConfig": {
"key": "source",
"value": "alibaba",
"valueType": "UserDefined"
}
}]
spec:
ingressClassName: alb
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: insert-header
port:
number: 80
场景四:流量镜像至服务器组
以下代码块定义了请求服务时,将请求复制到流量镜像服务器组。
登录应用型负载均衡ALB控制台,在左侧导航栏选择 ,在服务器组页面获取服务器组ID。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: traffic-mirror-ingress
annotations:
# 注解中的服务为集群中事实存在的服务,且服务名称必须和rule字段backend下的服务名称一致。
alb.ingress.kubernetes.io/actions.traffic-mirror: |
[{
"type": "TrafficMirror",
"TrafficMirrorConfig": {
"TargetType" : "ForwardGroupMirror",
"MirrorGroupConfig": {
"ServerGroupTuples" : [{
"ServerGroupID": "sgp-2auud2fxj1r46*****"
}]
}
}
}]
spec:
ingressClassName: alb
rules:
- host: demo.domain.ingress.top
http:
paths:
- path: /test
pathType: Prefix
backend:
service:
name: traffic-mirror
port:
number: 80
场景五:请求转发至多个后端服务器组
通过控制台配置
登录容器计算服务控制台,在左侧导航栏选择集群。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择 。
在路由页面,单击创建 Ingress,在创建 Ingress对话框配置路由。
配置项
说明
示例值
网关类型
可按需选择ALB应用负载均衡和Nginx两种网关类型
ALB应用负载均衡
名称
自定义路由名称。
forward-ingress
Ingress Class
自定义Ingress的类。
alb
监听/端口
在AlbConfig中定义ALB的监听端口和协议,规定了流量进入负载均衡方式和处理规则。
HTTP:80
规则
单击+ 添加规则可新增多个路由规则。
域名:自定义域名。
路径映射:配置如下配置项。
路径:指定服务访问的URL路径。本例中不做配置,保留根路径/。
匹配规则:支持前缀匹配(Prefix)、完整匹配(Exact)和默认(ImplementationSpecific)。
服务名称:选择目标服务,即K8s内的Service。
端口:选择服务需要暴露的端口。
Ingress支持同一个域名下配置多条路径。单击+ 添加路径新增路径。
域名:demo.domain.ingress.top
路径映射:
路径:/path
匹配规则:默认(前缀匹配Prefix)
服务名称:forward
端口:80
TLS配置
开启TLS配置开关,配置安全的路由服务。
域名:自定义域名。
保密字典:根据需要选择对应的保密字典。如果您需要创建Secret,请执行如下操作。
在保密字典右侧,单击创建。
在创建 Secret对话框,自定义保密字典的名称、Cert、Key,然后单击确定。
在保密字典的下拉框,选择已创建的Secret。
关闭TLS配置,此示例中不需要配置TLS。
更多配置
灰度发布:开启灰度发布开关。灰度规则可按照请求头、Cookie 、权重三个维度进行设置。
说明请求头、Cookie 、权重可以只设置一种,若同时设置生效规则按请求头、Cookie、权重顺序匹配。
按请求头:基于Request Header的流量切分,设置后会添加注解
nginx.ingress.kubernetes.io/canary-by-header
、nginx.ingress.kubernetes.io/canary-by-header-value
或nginx.ingress.kubernetes.io/canary-by-header-pattern
。按Cookie:基于Cookie的流量切分,设置后会添加注解
nginx.ingress.kubernetes.io/canary-by-cookie
。按权重:设置请求到指定服务的百分比(值为0~100的整数),设置后会添加注解
nginx.ingress.kubernetes.io/canary-weight
。
协议:指定后端服务的协议,设置后会添加注解
nginx.ingress.kubernetes.io/backend-protocol
。支持HTTP、HTTPS、gRPC、gRPCS四种服务协议。
重写路径:将客户端请求中的路径重写后发送到后端服务,设置后会添加注解
nginx.ingress.kubernetes.io/rewrite-target
。
关闭灰度发布,协议和重写路径保持默认。此示例中不需要配置灰度发布、协议、重新路径。
自定义转发规则
说明控制台自定义转发规则功能,目前处于灰度发布中。如需使用,请提交工单申请。
开启自定义转发规则,可精细化管理入站流量。
说明转发规则的条件条目上限为10个。
在转发条件下拉框中选择:
域名:
匹配请求域名,如果设置了多个域名,则域名之间是或的关系。设置后会添加注释
alb.ingress.kubernetes.io/conditions.host-example
。路径:
匹配请求路径,如果设置了多个路径,则路径之间是或的关系。设置后会添加注释
alb.ingress.kubernetes.io/conditions.path-example
。HTTP标头:
以键值对形式匹配请求的头部信息。例如,键是:
headername
值是:headervalue1
。如果设置了多个Header值,则Header之间是或的关系。设置后会添加注释alb.ingress.kubernetes.io/conditions.http-header-example
。
在转发动作下拉框中选择:
转发至
转发到后端多服务器组。在服务名称中,请选择目标服务。在端口中,选择目标端口号。然后自定义配置权重值。
说明如果是Flannel网络插件集群则不支持ClusterIP类型服务。
选择转发至,就不需要配置规则中的路径映射。
返回固定响应
设置通过ALB给客户端返回固定响应内容,可以设置响应状态码,正文内容和正文类型。按需求配置响应状态码,响应正文类型(可选)、响应正文(可选)。
响应正文类型:
text/plain:表示无格式的内容类型。
text/css:表示XML格式的内容。
text/html:表示HTML格式的内容。
application/javascript:表示JavaScript格式的内容。
application/json:表示JSON格式内容类型。
自定义转发规则支持多种转发条件及转发动作,您可以配置域名、路径、HTTP标头转发条件,转发至、返回固定响应的转发动作。
转发条件:选择域名。域名:demo.domain.ingress.top
转发动作:转发至
服务名称:tea-svc
端口:80
配置权重:80
添加服务
服务名称:coffee-svc
端口:80
配置权重:20
注解
您可自定义注解名称和值,也可根据名称选择或搜索要配置的注解。Ingress的注解请参见ALB Ingress配置词典。
单击+添加注解,可对Ingress无上限地添加注解。
无需配置,此示例不需要配置注解。
标签
标签的作用是为Ingress添加对应的标签,标示该Ingress的特点。
单击+添加标签,可对Ingress无上限地添加标签。
无需配置,此示例不需要配置标签。
配置完成,在创建Ingress页面的左下角,单击确定。
通过kubectl配置
以下代码块定义了请求服务时,将请求转发至集群内的多个服务。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: forward-ingress
annotations:
# 注解中的服务为集群中事实存在的服务,且服务名称必须和rule字段backend下的服务名称一致。
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 # servicePort的名称必须为use-annotation。
场景六:重写请求配置信息
以下代码块定义了请求服务时,重写请求的域名、路径和字符串。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
namespace: default
name: rewrite-ingress
annotations:
alb.ingress.kubernetes.io/actions.rewrite: |
[{
"type": "Rewrite",
"RewriteConfig": {
"Host": "demo.domain.ingress.top",
"Path": "/test",
"Query": "queryString"
}
}]
spec:
ingressClassName: alb
rules:
- http:
paths:
- path: /path
pathType: Prefix
backend:
service:
name: rewrite
port: 80
场景七:基于ResponseHeader对响应方向的请求头进行修改
自定义的ALB ingress转发规则在默认情况下为请求方向,如果您希望创建响应方向的转发规则,则需要将注解项
alb.ingress.kubernetes.io/rule-direction.<Service的名称>
配置为Response(该注解项默认配置为Request)。当创建响应方向的转发规则时,
ingressSpec.rules.backend
字段下的servicePort
的名称必须为use-annotation
。
以下代码块定义了当匹配到ResponseHeader
时,即Header中包含response-hello
,值必须为value1
或value2
,那么将在Header中插入新的请求头source: alibaba
。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
alb.ingress.kubernetes.io/rule-direction.response-header: Response
alb.ingress.kubernetes.io/conditions.response-header: |
[{
"type": "ResponseHeader",
"responseHeaderConfig": {
"key": "response-hello",
"values": [
"value1",
"value2"
]
}
}]
alb.ingress.kubernetes.io/actions.response-header: |
[{
"type": "InsertHeader",
"InsertHeaderConfig": {
"key": "source",
"value": "alibaba",
"valueType": "UserDefined"
}
}]
name: response-header
spec:
ingressClassName: alb
rules:
- http:
paths:
- path: /
pathType: ImplementationSpecific
backend:
service:
name: response-header
port:
name: use-annotation # servicePort的名称必须为use-annotation。
场景八:基于响应状态码对响应方向的请求头进行修改
自定义的ALB ingress转发规则在默认情况为请求方向,如果您希望创建响应方向的转发规则,则需要将注解项
alb.ingress.kubernetes.io/rule-direction.<Service的名称>
配置为Response(该注解项默认配置为Request)。当创建响应方向的转发规则时,
ingressSpec.rules.backend
字段下的servicePort
的名称必须为use-annotation
。
以下代码块定义了仅当响应状态码为200或300时,才会对请求头执行移除操作(将response-hello
从请求Header中移除)。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
alb.ingress.kubernetes.io/rule-direction.response-hello: Response
alb.ingress.kubernetes.io/conditions.response-hello: |
[{
"type": "ResponseStatusCode",
"responseStatusCodeConfig": {
"values": [
"200",
"300"
]
}
}]
alb.ingress.kubernetes.io/actions.response-hello: |
[{
"type": "RemoveHeader",
"RemoveHeaderConfig": {
"key": "response-hello"
}
}]
name: response-hello
spec:
ingressClassName: alb
rules:
- http:
paths:
- path: /*
pathType: ImplementationSpecific
backend:
service:
name: response-hello
port:
name: use-annotation # servicePort的名称必须为use-annotation。