索引
功能分类 | 配置示例 |
ALB Ingress配置 | 配置健康检查 |
端口/协议配置 | |
转发策略配置 | |
高级配置 | |
基于域名转发请求
通过创建一个简单的Ingress,根据指定的正常域名或空域名转发请求,示例如下。
基于正常域名转发请求
以下 YAML 示例将路由路径配置为 /hello,访问 demo.domain.ingress.top/hello 时会转发到后端服务。
部署以下模板,分别创建Service、Deployment和Ingress,将访问请求通过Ingress的域名转发至Service。
展开查看示例YAML
1.19及之后版本集群
apiVersion: v1
kind: Service
metadata:
name: demo-service
namespace: default
spec:
ports:
- name: port1
port: 80
protocol: TCP
targetPort: 8080
selector:
app: demo
sessionAffinity: None
type: NodePort
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: demo
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: demo
template:
metadata:
labels:
app: demo
spec:
containers:
- image: registry.cn-hangzhou.aliyuncs.com/alb-sample/cafe:v1
imagePullPolicy: IfNotPresent
name: demo
ports:
- containerPort: 8080
protocol: TCP
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: demo
namespace: default
spec:
ingressClassName: alb
rules:
- host: demo.domain.ingress.top
http:
paths:
- backend:
service:
name: demo-service
port:
number: 80
path: /hello
pathType: ImplementationSpecific
1.19版本之前集群
apiVersion: v1
kind: Service
metadata:
name: demo-service
namespace: default
spec:
ports:
- name: port1
port: 80
protocol: TCP
targetPort: 8080
selector:
app: demo
sessionAffinity: None
type: NodePort
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: demo
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: demo
template:
metadata:
labels:
app: demo
spec:
containers:
- image: registry.cn-hangzhou.aliyuncs.com/alb-sample/cafe:v1
imagePullPolicy: IfNotPresent
name: demo
ports:
- containerPort: 8080
protocol: TCP
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: demo
namespace: default
spec:
ingressClassName: alb
rules:
- host: demo.domain.ingress.top
http:
paths:
- backend:
serviceName: demo-service
servicePort: 80
path: /hello
pathType: ImplementationSpecific
执行以下命令,通过指定的正常域名访问服务。
替换ADDRESS为ALB实例对应的域名地址,可通过kubectl get ing获取。
curl -H "host: demo.domain.ingress.top" <ADDRESS>/hello
基于空域名转发请求
以下 YAML 示例将域名配置为空,路由路径配置为 /hello,访问<ADDRESS>/hello时会转发到后端服务。
部署以下模板,创建Ingress。
展开查看示例YAML
1.19及之后版本集群
apiVersion: v1
kind: Service
metadata:
name: demo-service
namespace: default
spec:
ports:
- name: port1
port: 80
protocol: TCP
targetPort: 8080
selector:
app: demo
sessionAffinity: None
type: NodePort
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: demo
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: demo
template:
metadata:
labels:
app: demo
spec:
containers:
- image: registry.cn-hangzhou.aliyuncs.com/alb-sample/cafe:v1
imagePullPolicy: IfNotPresent
name: demo
ports:
- containerPort: 8080
protocol: TCP
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: demo
namespace: default
spec:
ingressClassName: alb
rules:
- host: ""
http:
paths:
- backend:
service:
name: demo-service
port:
number: 80
path: /hello
pathType: ImplementationSpecific
1.19版本之前集群
apiVersion: v1
kind: Service
metadata:
name: demo-service
namespace: default
spec:
ports:
- name: port1
port: 80
protocol: TCP
targetPort: 8080
selector:
app: demo
sessionAffinity: None
type: NodePort
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: demo
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: demo
template:
metadata:
labels:
app: demo
spec:
containers:
- image: registry.cn-hangzhou.aliyuncs.com/alb-sample/cafe:v1
imagePullPolicy: IfNotPresent
name: demo
ports:
- containerPort: 8080
protocol: TCP
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: demo
namespace: default
spec:
ingressClassName: alb
rules:
- host: ""
http:
paths:
- backend:
serviceName: demo-service
servicePort: 80
path: /hello
pathType: ImplementationSpecific
执行以下命令,通过空域名访问服务。
替换ADDRESS为ALB实例对应的域名地址,可通过kubectl get ing获取。
curl <ADDRESS>/hello
基于URL路径转发请求
ALB Ingress支持按照URL转发请求,可以通过匹配规则(pathType)字段设置不同的URL匹配策略。pathType支持以下三种匹配方式。
三种匹配方式的示例如下:
前缀匹配(Prefix)
URL路径采用以/分隔的前缀匹配方式,匹配时区分大小写,并按路径中的每个元素逐级比较。
以下示例 YAML 中,当路由规则配置为/时,所有以/开头的路径(如/hello等)都能被匹配和访问。
部署以下模板,创建Ingress。
展开查看示例YAML
1.19及之后版本集群
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: demo-path-prefix
namespace: default
spec:
ingressClassName: alb
rules:
- http:
paths:
- path: /
backend:
service:
name: demo-service
port:
number: 80
pathType: Prefix
1.19版本之前集群
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: demo-path-prefix
namespace: default
spec:
ingressClassName: alb
rules:
- http:
paths:
- path: /
backend:
serviceName: demo-service
servicePort: 80
pathType: Prefix
执行以下命令,访问服务。
替换ADDRESS为ALB实例对应的域名地址,可通过kubectl get ing获取。
curl <ADDRESS>/hello
完整匹配(Exact)或默认(ImplementationSpecific)
在以下示例 YAML 中,路由规则配置为 /hello 时,仅能匹配并访问 /hello 路径。
部署以下模板,创建Ingress。
展开查看示例YAML
1.19及之后版本集群
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: demo-path
namespace: default
spec:
ingressClassName: alb
rules:
- http:
paths:
- path: /hello
backend:
service:
name: demo-service
port:
number: 80
pathType: Exact
1.19版本之前集群
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: demo-path
namespace: default
spec:
ingressClassName: alb
rules:
- http:
paths:
- path: /hello
backend:
serviceName: demo-service
servicePort: 80
pathType: Exact
执行以下命令,访问服务。
替换ADDRESS为ALB实例对应的域名地址,可通过kubectl get ing获取。
curl <ADDRESS>/hello
配置健康检查
ALB Ingress支持配置健康检查,可以通过设置以下注解来实现。
展开查看完整YAML示例
1.19及之后版本集群
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: cafe-ingress
annotations:
alb.ingress.kubernetes.io/healthcheck-enabled: "true"
alb.ingress.kubernetes.io/healthcheck-path: "/"
alb.ingress.kubernetes.io/healthcheck-protocol: "HTTP"
alb.ingress.kubernetes.io/healthcheck-httpversion: "HTTP1.1"
alb.ingress.kubernetes.io/healthcheck-method: "HEAD"
alb.ingress.kubernetes.io/healthcheck-code: "http_2xx"
alb.ingress.kubernetes.io/healthcheck-timeout-seconds: "5"
alb.ingress.kubernetes.io/healthcheck-interval-seconds: "2"
alb.ingress.kubernetes.io/healthy-threshold-count: "3"
alb.ingress.kubernetes.io/unhealthy-threshold-count: "3"
spec:
ingressClassName: alb
rules:
- http:
paths:
# 配置Context Path
- path: /tea
backend:
service:
name: tea-svc
port:
number: 80
# 配置Context Path
- path: /coffee
backend:
service:
name: coffee-svc
port:
number: 80
1.19版本之前集群
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: cafe-ingress
annotations:
alb.ingress.kubernetes.io/healthcheck-enabled: "true"
alb.ingress.kubernetes.io/healthcheck-path: "/"
alb.ingress.kubernetes.io/healthcheck-protocol: "HTTP"
alb.ingress.kubernetes.io/healthcheck-method: "HEAD"
alb.ingress.kubernetes.io/healthcheck-httpcode: "http_2xx"
alb.ingress.kubernetes.io/healthcheck-timeout-seconds: "5"
alb.ingress.kubernetes.io/healthcheck-interval-seconds: "2"
alb.ingress.kubernetes.io/healthy-threshold-count: "3"
alb.ingress.kubernetes.io/unhealthy-threshold-count: "3"
spec:
ingressClassName: alb
rules:
- http:
paths:
# 配置Context Path。
- path: /tea
backend:
serviceName: tea-svc
servicePort: 80
# 配置Context Path。
- path: /coffee
backend:
serviceName: coffee-svc
servicePort: 80
注解示例如下:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: cafe-ingress
annotations:
alb.ingress.kubernetes.io/healthcheck-enabled: "true"
alb.ingress.kubernetes.io/healthcheck-path: "/"
alb.ingress.kubernetes.io/healthcheck-protocol: "HTTP"
alb.ingress.kubernetes.io/healthcheck-httpversion: "HTTP1.1"
alb.ingress.kubernetes.io/healthcheck-method: "HEAD"
alb.ingress.kubernetes.io/healthcheck-code: "http_2xx"
alb.ingress.kubernetes.io/healthcheck-timeout-seconds: "5"
alb.ingress.kubernetes.io/healthcheck-interval-seconds: "2"
alb.ingress.kubernetes.io/healthy-threshold-count: "3"
alb.ingress.kubernetes.io/unhealthy-threshold-count: "3"
spec:
... ...
参数 | 描述 | 默认值 |
alb.ingress.kubernetes.io/healthcheck-enabled
| 是否开启后端服务器组的健康检查。 true:开启健康检查。
false:不开启健康检查。
| false
|
alb.ingress.kubernetes.io/healthcheck-path
| 健康检查路径。 | /
|
alb.ingress.kubernetes.io/healthcheck-protocol
| 健康检查使用的协议。 HTTP:使用HTTP协议,通过发送HEAD或GET请求模拟浏览器的访问行为检查服务器应用是否健康。
HTTPS:使用HTTPS协议,通过发送HEAD或GET请求模拟浏览器的访问行为检查服务器应用是否健康。
TCP:使用TCP协议,通过发送SYN握手报文检测服务器端口是否存活。
GRPC:使用gRPC协议,通过发送POST或GET请求检查服务器应用是否健康。
| HTTP
|
alb.ingress.kubernetes.io/healthcheck-httpversion
| HTTP协议版本,healthcheck-protocol为HTTP或HTTPS时生效。 | HTTP1.1
|
alb.ingress.kubernetes.io/healthcheck-method
| 健康检查的方法。
重要 healthcheck-protocol为GRPC时,需要选择POST或GET。
| HEAD
|
alb.ingress.kubernetes.io/healthcheck-httpcode
| 健康检查状态码。仅当探测请求成功且返回指定状态码时,才认为该后端服务器状态正常。 可以填入以下选项中的任意一个或多个组合,多个状态码用英文半角逗号(,)分隔: http_2xx
http_3xx
http_4xx
http_5xx
| http_2xx
|
alb.ingress.kubernetes.io/healthcheck-code
| 健康检查状态码,仅当探测请求成功且返回指定状态码时,才认为该后端服务器状态正常。与healthcheck-httpcode同时使用时,以此字段为准。 可选参数依赖于healthcheck-protocol中填入的值: HTTP或HTTPS:
可以填入以下选项中的任意一个或多个组合,多个状态码用英文半角逗号(,)分隔: http_2xx
http_3xx
http_4xx
http_5xx
GRPC:取值范围:[0, 99]。
支持范围输入,最多填入20个范围值,多个范围值使用半角逗号(,)分隔。
| HTTP或HTTPS
默认值:http_2xx GRPC
默认值:0
|
alb.ingress.kubernetes.io/healthcheck-timeout-seconds
| 健康检查超时时间,单位秒(s)。取值范围:[1, 300]。 | 5
|
alb.ingress.kubernetes.io/healthcheck-interval-seconds
| 健康检查间隔周期,单位秒(s)。取值范围:[1, 50]。 | 2
|
alb.ingress.kubernetes.io/healthy-threshold-count
| 健康检查成功多少次判定为成功。取值范围:[2, 10]。 | 3
|
alb.ingress.kubernetes.io/unhealthy-threshold-count
| 健康检查失败多少次判定为失败。取值范围:[2, 10]。 | 3
|
alb.ingress.kubernetes.io/healthcheck-connect-port
| 健康检查使用的端口。 | 0
|
配置HTTP重定向至HTTPS
ALB Ingress通过配置以下注解,实现将 HTTP 请求重定向至 HTTPS 443 端口。
展开查看完整示例YAML
1.19及之后版本集群
apiVersion: v1
kind: Service
metadata:
name: demo-service-ssl
namespace: default
spec:
ports:
- name: port1
port: 80
protocol: TCP
targetPort: 8080
selector:
app: demo-ssl
sessionAffinity: None
type: NodePort
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: demo-ssl
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: demo-ssl
template:
metadata:
labels:
app: demo-ssl
spec:
containers:
- image: registry.cn-hangzhou.aliyuncs.com/alb-sample/cafe:v1
imagePullPolicy: IfNotPresent
name: demo-ssl
ports:
- containerPort: 8080
protocol: TCP
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
alb.ingress.kubernetes.io/ssl-redirect: "true"
name: demo-ssl
namespace: default
spec:
ingressClassName: alb
tls:
- hosts:
- ssl.alb.ingress.top
rules:
- host: ssl.alb.ingress.top
http:
paths:
- backend:
service:
name: demo-service-ssl
port:
number: 80
path: /
pathType: Prefix
1.19版本之前集群
apiVersion: v1
kind: Service
metadata:
name: demo-service-ssl
namespace: default
spec:
ports:
- name: port1
port: 80
protocol: TCP
targetPort: 8080
selector:
app: demo-ssl
sessionAffinity: None
type: NodePort
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: demo-ssl
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: demo-ssl
template:
metadata:
labels:
app: demo-ssl
spec:
containers:
- image: registry.cn-hangzhou.aliyuncs.com/alb-sample/cafe:v1
imagePullPolicy: IfNotPresent
name: demo-ssl
ports:
- containerPort: 8080
protocol: TCP
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
annotations:
alb.ingress.kubernetes.io/ssl-redirect: "true"
name: demo-ssl
namespace: default
spec:
ingressClassName: alb
tls:
- hosts:
- ssl.alb.ingress.top
rules:
- host: ssl.alb.ingress.top
http:
paths:
- backend:
serviceName: demo-service-ssl
servicePort: 80
path: /
pathType: Prefix
参数 | 描述 | 注解示例 |
alb.ingress.kubernetes.io/ssl-redirect: "true"
| 将 HTTP 请求重定向到 HTTPS 443 端口。 | apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
alb.ingress.kubernetes.io/ssl-redirect: "true"
name: demo-ssl
... ...
|
支持后端HTTPS和gRPC协议
当前 ALB 支持 HTTPS 和 gRPC 作为后端协议,您只需在 Ingress 中添加以下注解。
展开查看完整YAML示例
1.19及之后版本集群
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
alb.ingress.kubernetes.io/backend-protocol: "grpc"
name: demo-alb-ingress
spec:
ingressClassName: alb
tls:
- hosts:
- demo.alb.ingress.top
rules:
- host: demo.alb.ingress.top
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: grpc-demo-svc
port:
number: 9080
1.19版本之前集群
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
annotations:
alb.ingress.kubernetes.io/backend-protocol: "grpc"
name: demo-alb-ingress
spec:
ingressClassName: alb
tls:
- hosts:
- demo.alb.ingress.top
rules:
- host: demo.alb.ingress.top
http:
paths:
- backend:
serviceName: grpc-demo-svc
servicePort: 9080
path: /
pathType: Prefix
说明 Ingress创建后,后端协议不支持修改,如果您需要变更协议,请删除重建Ingress。
参数 | 描述 | YAML示例 |
alb.ingress.kubernetes.io/backend-protocol
| https:后端服务使用 HTTPS 协议。 grpc:后端服务使用 gRPC 协议。 使用 Ingress 转发 gRPC 服务时,需为对应域名配置 SSL 证书,并通过 TLS 协议进行通信。
| apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
alb.ingress.kubernetes.io/backend-protocol: "grpc"
name: demo-alb-ingress
... ...
|
配置正则表达式
使用注解alb.ingress.kubernetes.io/use-regex:"true"启用正则模式,并在自定义转发条件或转发动作中配置相应的正则表达式。
重要 注解仅在pathType: Prefix的路径规则下生效。
展开查看完整YAML示例
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
alb.ingress.kubernetes.io/use-regex: "true" ## 允许使用正则表达式。
alb.ingress.kubernetes.io/conditions.<YOUR-SVC-NAME>: | ## <YOUR-SVC-NAME>需替换为实际的 Service 名称,必须与下面 backend.service.name一致。
[{
"type": "Path",
"pathConfig": {
"values": [
"~*/pathvalue1", ## 正则表达式前需要添加~*或~作为正则标志。~*或~后的内容为实际生效的正则表达式。~*表示区分大小写的正则匹配,~表示不区分大小写的正则匹配。
"/pathvalue2" ## 精确匹配前无需添加~*。
]
}
}]
name: ingress-example
spec:
ingressClassName: alb
rules:
- http:
paths:
- path: /test-path-for-alb
pathType: Prefix
backend:
service:
name: <YOUR-SVC-NAME> ## 此处<YOUR-SVC-NAME>需和注解中的自定义转发条件注明的服务名称保持一致,用于表示对应关系。
port:
number: 88
参数 | 描述 | |
alb.ingress.kubernetes.io/use-regex: "true"
| 启用正则表达式。 | apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
alb.ingress.kubernetes.io/use-regex: "true" ## 允许使用正则表达式。
alb.ingress.kubernetes.io/conditions.<YOUR-SVC-NAME>: | ## <YOUR-SVC-NAME>需替换为实际的 Service 名称,必须与下面 backend.service.name一致。
[{
"type": "Path", ## 支持Host
"pathConfig": {
"values": [
"~*/pathvalue1", ## 正则表达式前需要添加~*或~作为正则标志。~*或~后的内容为实际生效的正则表达式。~*表示区分大小写的正则匹配,~表示不区分大小写的正则匹配。
"/pathvalue2" ## 精确匹配前无需添加~*。
]
}
}]
... ...
|
alb.ingress.kubernetes.io/conditions.<YOUR-SVC-NAME>
| 配置自定义转发条件。更多详情请参见转发条件介绍。 <YOUR-SVC-NAME>需替换为实际的 Service 名称,需要和下面backend.service.name一致。
|
正则匹配规则说明:
匹配对象 | 前缀 | 规则示例 | 客户端路径 | 是否命中 | 说明 |
域名 | 以 ~开头 | ~test.example.com
| test.EXAMPLE.com | 是 | 域名支持不区分大小写正则匹配。 |
路径 | 以 ~开头 | ~/api
| /API | 是 | 路径支持不区分大小写正则匹配。 |
以 ~* 开头 | ~*/api
| /Api | 否 | 路径支持区分大小写正则匹配。 |
配置重写
ALB Ingress支持重写(Rewrite)功能,在接收到客户端请求后,修改请求中的Path部分,再发送给后端Service。重写通过以下两个Annotation实现:
配置示例
示例场景一:移除前缀
下方的YAML示例中path: /something(/|$)(.*)通过正则表达式将客户端请求的路径分为了三个部分:
alb.ingress.kubernetes.io/rewrite-target注解中配置的重写路径为/(路径标准前缀)+${2}(第二捕获组的内容),路径的重写效果如下:
客户端原始路径 | 是否匹配Path正则表达式 | 重写后路径 |
/something
| 匹配,第二捕获组为空。 | /
|
/something/
| 匹配,第二捕获组为空。 | /
|
/something/new
| 匹配,第二捕获组的内容为new。 | /new
|
/something-new/item
| 不匹配,在本示例中未匹配到路由规则,ALB Ingress返回503状态码。 |
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: rewrite-ingress
annotations:
alb.ingress.kubernetes.io/use-regex: "true" # 允许path字段使用正则表达式。
alb.ingress.kubernetes.io/rewrite-target: /${2} # 该注解支持正则表达式替换。
spec:
ingressClassName: alb
rules:
- host: demo.alb.ingress.top
http:
paths:
- path: /something(/|$)(.*)
pathType: Prefix
backend:
service:
name: rewrite-svc
port:
number: 9080
示例场景二:捕获并重新排列多个部分
下方示例捕获路径/items/(.*)/(.*)/(.*)中的多个部分并进行重新排列,并且在用户无感的情况下更改了URL的格式(改为类POST形式)。重写路径为/(路径标准前缀)+${2}(第二捕获组的内容)+?code=+${3}(第三捕获组的内容),路径的重写效果如下:
示例中明确要求路径中有四个分段,使用这种方式要求客户端使用的路径为固定格式。
客户端原始路径 | 是否匹配Path正则表达式 | 重写后路径 |
/items/electronics/computers/554
| 匹配,第二捕获组的内容为computers,第三捕获组的内容为554。 | /computers?code=554。
|
/items/produce/fruits/12
| 匹配,第二捕获组的内容为fruits,第三捕获组的内容为12。 | /fruits?code=12
|
/items/headphones/5
| 不匹配,在本示例中未匹配到路由规则,ALB Ingress返回503状态码。 |
/drinks/41
| 不匹配,在本示例中未匹配到路由规则,ALB Ingress返回503状态码。 |
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: rewrite-ingress
annotations:
alb.ingress.kubernetes.io/use-regex: "true" # 允许path字段使用正则表达式。
alb.ingress.kubernetes.io/rewrite-target: /${2}?code=${3} # 该注解支持正则表达式替换。
spec:
ingressClassName: alb
rules:
- host: demo.alb.ingress.top
http:
paths:
- path: /items/(.*)/(.*)/(.*)
pathType: Prefix
backend:
service:
name: rewrite-svc
port:
number: 9080
示例场景三:将多个路径重写到单一路径
下方示例通过同时对多个路径(/app-a(/|$)(.*)和/app-b(/|$)(.*))进行正则匹配,将多个路径重写到一个单一路径。重写路径为/app-c/+${2}(第二捕获组的内容),路径的重写效果如下:
客户端原始路径 | 是否匹配Path正则表达式 | 重写后路径 |
/app-a/item1
| 匹配,第二捕获组的内容为item1。 | /app-c/item1
|
/app-a/item2
| 匹配,第二捕获组的内容为item2。 | /app-c/item2
|
/app-a或/app-a/
| 匹配,第二捕获组为空。 | /app-c/
|
/drinks/41
| 不匹配,在本示例中未匹配到路由规则,ALB Ingress返回503状态码。 |
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: rewrite-ingress
annotations:
alb.ingress.kubernetes.io/use-regex: "true" # 允许path字段使用正则表达式。
alb.ingress.kubernetes.io/rewrite-target: /app-c/${2} # 该注解支持正则表达式替换。
spec:
ingressClassName: alb
rules:
- host: demo.alb.ingress.top
http:
paths:
- path: /app-a(/|$)(.*)
pathType: Prefix
backend:
service:
name: rewrite-svc
port:
number: 9080
- path: /app-b(/|$)(.*)
pathType: Prefix
backend:
service:
name: rewrite-svc
port:
number: 9080
示例场景四:重写域名
alb.ingress.kubernetes.io/rewrite-target 注解仅支持更改路径,如需更改URL中的其他部分,例如域名与参数,请使用自定义转发规则。
验证重写规则匹配
使用sed命令可以提前测试客户端使用的特定路径是否匹配path中配置的正则表达式,并查看重写后的新路径。
以示例场景二:捕获并重新排列多个部分中的捕获路径/items/(.*)/(.*)/(.*)和重写规则/${2}?code=${3}为例:
将下方的示例命令保存到path2.txt:
/items/electronics/computers/554
/items/produce/fruits/12
/items/headphones/5
/drinks/41
查看路径是否匹配,以及重写后的路径:
下方命令中对示例中的path正则表达式(/items/(.*)/(.*)/(.*))和重写后的路径(/${2}?code=${3})进行了改写,在sed命令中特殊字符/前需要使用转义字符\,捕获组内容的写法由${2}改为\2。
sed -E 's#\/items\/(.*)\/(.*)\/(.*)#Matched: [&] ---> Rewritten: [/\2?code=\3]#' path2.txt
预期输出如下,前两条路径匹配重写规则,会被重写到新的路径;后两条路径不匹配,不会被重写。
Matched: [/items/electronics/computers/554] ---> Rewritten: [/computers?code=554]
Matched: [/items/produce/fruits/12] ---> Rewritten: [/fruits?code=12]
/items/headphones/5
/drinks/41
配置自定义监听端口
ALB Ingress 支持通过注解自定义监听端口,可实现服务同时暴露 80(HTTP)和 443(HTTPS)端口。
展开查看完整YAML示例
1.19及之后版本集群
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: cafe-ingress
annotations:
alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80},{"HTTPS": 443}]'
spec:
ingressClassName: alb
tls:
- hosts:
- demo.alb.ingress.top
rules:
- host: demo.alb.ingress.top
http:
paths:
- path: /tea
pathType: ImplementationSpecific
backend:
service:
name: tea-svc
port:
number: 80
1.19版本之前集群
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
annotations:
alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80},{"HTTPS": 443}]'
name: cafe-ingress
spec:
ingressClassName: alb
tls:
- hosts:
- demo.alb.ingress.top
rules:
- host: demo.alb.ingress.top
http:
paths:
- backend:
serviceName: tea-svc
servicePort: 80
path: /tea
pathType: ImplementationSpecific
重要 ALB不支持直接在Ingress中创建新的监听。为确保Ingress能够正常工作,您需要先在AlbConfig中创建所需的监听端口和协议,然后在Ingress中将这些监听与服务关联起来。关于如何创建ALB监听,请参见通过AlbConfig配置ALB监听。
参数 | 描述 | YAML示例 |
alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80},{"HTTPS": 443}]'
| 使服务同时监听 80 和 443 端口。 | apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: cafe-ingress
annotations:
alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80},{"HTTPS": 443}]'
... ...
|
配置转发规则优先级
默认情况下,ALB 转发规则的优先级排序依据如下:
不同Ingress按照namespace/name的字典顺序优先级进行排列,字典顺序小的优先级高。
先比较 namespace,若相同则再比 name,各字符逐一比较。
同一个Ingress按照rule字段先后顺序进行排序,配置在上面的优先级高。
rules:
- host: www.example.com
http: ...
- host: www.test.com
http: ...
若不修改Ingress的namespace/name字段,可以配置以下Ingress注解定义ALB转发规则优先级:
展开查看完整的YAML示例
1.19及之后版本集群
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: cafe-ingress
annotations:
alb.ingress.kubernetes.io/order: "2"
spec:
ingressClassName: alb
rules:
- host: demo.alb.ingress.top
http:
paths:
- path: /tea
pathType: ImplementationSpecific
backend:
service:
name: tea-svc
port:
number: 80
1.19版本之前集群
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
annotations:
alb.ingress.kubernetes.io/order: "2"
name: cafe-ingress
spec:
ingressClassName: alb
rules:
- host: demo.alb.ingress.top
http:
paths:
- backend:
serviceName: tea-svc
servicePort: 80
path: /tea
pathType: ImplementationSpecific
参数 | 描述 | 取值范围 | YAML示例 |
alb.ingress.kubernetes.io/order
| 定义 ALB 转发规则的优先级,值越小优先级越高。 同一个监听内规则优先级必须唯一。 | [1,1000] 默认值:10 | apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: cafe-ingress
annotations:
alb.ingress.kubernetes.io/order: "2"
spec:
... ...
|
通过注解实现灰度发布
ALB支持复杂路由处理,具备基于 Header、Cookie 及权重的灰度发布能力。可通过配置以下相关注解灵活实现各类灰度发布策略。关于灰度发布最佳实践,请参见通过ALB Ingress实现灰度发布。
参数 | 描述 | 说明 |
alb.ingress.kubernetes.io/canary: "true"
| 开启灰度发布能力 | |
通过注解实现会话保持
ALB Ingress支持通过以下注解实现会话保持。
展开查看完整YAML示例
1.19及之后版本集群
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: cafe-ingress-v3
annotations:
alb.ingress.kubernetes.io/sticky-session: "true"
alb.ingress.kubernetes.io/sticky-session-type: "Insert" # 支持自定义cookie时,植入cookie类型需为Server。
alb.ingress.kubernetes.io/cookie-timeout: "1800"
alb.ingress.kubernetes.io/cookie: "test"
spec:
ingressClassName: alb
rules:
- http:
paths:
- backend:
service:
name: tea-svc
port:
number: 80
path: /tea2
pathType: ImplementationSpecific
- backend:
service:
name: coffee-svc
port:
number: 80
path: /coffee2
pathType: ImplementationSpecific
1.19版本之前集群
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: cafe-ingress-v3
annotations:
alb.ingress.kubernetes.io/sticky-session: "true"
alb.ingress.kubernetes.io/sticky-session-type: "Insert" # 支持自定义cookie时,植入cookie类型需为Server。
alb.ingress.kubernetes.io/cookie-timeout: "1800"
alb.ingress.kubernetes.io/cookie: "test"
spec:
ingressClassName: alb
rules:
- http:
paths:
#配置Context Path。
- path: /tea2
pathType: ImplementationSpecific
backend:
serviceName: tea-svc
servicePort: 80
#配置Context Path。
- path: /coffee2
pathType: ImplementationSpecific
backend:
serviceName: coffee-svc
servicePort: 80
注解示例如下:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: cafe-ingress-v3
annotations:
alb.ingress.kubernetes.io/sticky-session: "true"
alb.ingress.kubernetes.io/sticky-session-type: "Insert" # 支持自定义cookie时,植入cookie类型需为Server。
alb.ingress.kubernetes.io/cookie-timeout: "1800"
alb.ingress.kubernetes.io/cookie: "test"
spec:
... ...
参数 | 描述 | 默认值 |
alb.ingress.kubernetes.io/sticky-session
| 是否启用会话保持。 | false
|
alb.ingress.kubernetes.io/sticky-session-type
| Cookie的处理方式。 Insert:植入Cookie。客户端第一次访问时,负载均衡会在返回请求中植入Cookie(即在HTTP或HTTPS响应报文中插入SERVERID),下次客户端携带此Cookie访问时,负载均衡服务会将请求定向转发给之前记录到的后端服务器。
Server:重写Cookie。负载均衡发现用户自定义了Cookie,将会对原来的Cookie进行重写,下次客户端携带新的Cookie访问时,负载均衡服务会将请求定向转发给之前记录到的后端服务器。
| Insert
|
alb.ingress.kubernetes.io/cookie-timeout
| Cookie 超时时间(单位:秒)取值:1~86400; sticky-session-type配置为Insert时,此注解生效。
| 1000 |
alb.ingress.kubernetes.io/cookie
| 自定义Cookie值。 sticky-session-type配置为Server时,此注解必填,不允许为空。
| "" |
指定服务器组负载均衡算法
ALB Ingress 可通过以下注解指定服务器组的负载均衡算法,具体取值及说明见下表。
展开查看完整YAML示例
1.19及之后版本集群
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: cafe-ingress
annotations:
alb.ingress.kubernetes.io/backend-scheduler: "uch" # 此处的uch可按需配置为wrr、sch和wlc。
alb.ingress.kubernetes.io/backend-scheduler-uch-value: "test" # 仅负载均衡算法为uch时,需要配置此参数。当调度算法为wrr、sch或wlc均无需配置此参数。
spec:
ingressClassName: alb
rules:
- host: demo.alb.ingress.top
http:
paths:
- path: /tea
pathType: ImplementationSpecific
backend:
service:
name: tea-svc
port:
number: 80
1.19版本之前集群
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
annotations:
alb.ingress.kubernetes.io/backend-scheduler: "uch" # 此处的uch也可按需配置为wrr、sch和wlc。
alb.ingress.kubernetes.io/backend-scheduler-uch-value: "test" # 仅负载均衡算法为uch时,需要配置此参数。当调度算法为wrr、sch或wlc均无需配置此参数。
name: cafe-ingress
spec:
ingressClassName: alb
rules:
- host: demo.alb.ingress.top
http:
paths:
- backend:
serviceName: tea-svc
servicePort: 80
path: /tea
pathType: ImplementationSpecific
参数 | 取值 | 描述 | |
alb.ingress.kubernetes.io/backend-scheduler
| wrr
| 加权轮询,权重高的后端服务器被轮询到概率更高(默认值)。 | apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: cafe-ingress
annotations:
alb.ingress.kubernetes.io/backend-scheduler: "uch" # 此处的uch可按需配置为wrr、sch和wlc。
alb.ingress.kubernetes.io/backend-scheduler-uch-value: "test" # 仅负载均衡算法为uch时,需要配置此参数。当调度算法为wrr、sch或wlc均无需配置此参数。
spec:
... ...
|
wlc
| 根据每台后端服务器设定的权重值和后端服务器的实际负载(即连接数)进行轮询。权重相同则优先选择连接数少的服务器。 |
sch
| 源IP一致性Hash,基于客户端源IP请求做哈希分配,同一IP分配至同一后端服务器。 |
uch
| URL参数一致性Hash。 通过注解alb.ingress.kubernetes.io/backend-scheduler-uch-value指定URL参数进行一致性Hash。 |
跨域配置
ALB Ingress 支持通过以下注解参数控制跨域行为。可指定允许访问的站点、请求方法、请求和响应头、凭证携带及预检(OPTIONS)缓存时间,满足不同安全和业务场景下的跨域访问需求。
展开查看完整YAML示例
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: alb-ingress
annotations:
alb.ingress.kubernetes.io/enable-cors: "true"
alb.ingress.kubernetes.io/cors-expose-headers: ""
alb.ingress.kubernetes.io/cors-allow-methods: "GET,POST"
alb.ingress.kubernetes.io/cors-allow-credentials: "true"
alb.ingress.kubernetes.io/cors-max-age: "600"
alb.ingress.kubernetes.io/cors-allow-origin: "允许跨域的域名"
spec:
ingressClassName: alb
rules:
- host: demo.alb.ingress.top
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: cloud-nodeport
port:
number: 80
注解示例如下:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: alb-ingress
annotations:
alb.ingress.kubernetes.io/enable-cors: "true"
alb.ingress.kubernetes.io/cors-expose-headers: ""
alb.ingress.kubernetes.io/cors-allow-methods: "GET,POST"
alb.ingress.kubernetes.io/cors-allow-credentials: "true"
alb.ingress.kubernetes.io/cors-max-age: "600"
alb.ingress.kubernetes.io/cors-allow-origin: "允许跨域的域名"
spec:
... ...
参数 | 描述 | 默认值 |
alb.ingress.kubernetes.io/enable-cors
| 启用 CORS 跨域配置。 | 默认值:"true" |
alb.ingress.kubernetes.io/cors-allow-origin
| 允许通过浏览器访问服务器资源的站点。 站点之间使用英文半角逗号(,)分割。 单个value值必须以http://或者https://开头后跟一个正确域名,或者一级的泛域名。不支持使用IP地址。 | |
alb.ingress.kubernetes.io/cors-allow-methods
| 允许跨域方法。 不区分大小写。跨域方法之间使用英文半角逗号(,)分割。 | 默认值:GET, PUT, POST, DELETE, PATCH, OPTIONS 示例:alb.ingress.kubernetes.io/cors-allow-methods: "PUT, GET, POST, OPTIONS"
|
alb.ingress.kubernetes.io/cors-allow-headers
| 允许跨域传播的请求头。 支持配置为*或配置一个或多个 value 值,多个 value 值用半角逗号(,)隔开。单个 value 值只允许包含大小写字母、数字,不能以下划线(_)和短划线(-)开头或结尾,最大长度限制为 32 个字符。 | 默认值:DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization 示例:alb.ingress.kubernetes.io/cors-allow-headers: "X-Forwarded-For, X-app123-XPTO"
|
alb.ingress.kubernetes.io/cors-expose-headers
| 允许暴露的Header列表, 支持配置为*或配置一个或多个 value 值,多个 value 值用半角逗号(,)隔开。单个 value 值只允许包含大小写字母、数字,不能以下划线(_)和短划线(-)开头或结尾,最大长度限制为 32 个字符。 | |
alb.ingress.kubernetes.io/cors-allow-credentials
| 设置跨域访问时是否允许携带凭证信息。 | |
alb.ingress.kubernetes.io/cors-max-age
| 对于非简单请求,设置OPTIONS预检请求在浏览器的最大缓存时间(秒),取值范围[0, 172800]。 | 默认值:172800 |
后端长连接
传统的负载均衡会采用短链接的方式访问后端服务器组,每一条请求都需要经历TCP层面的建立连接和断开连接,使网络连接成为这类高性能系统的瓶颈,通过负载均衡的后端长连接支持,极大地减少了处理连接层面的资源消耗,从而大幅度提高处理性能。参考示例如下:
展开查看完整YAML示例
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: alb-ingress
annotations:
alb.ingress.kubernetes.io/backend-keepalive: "true"
spec:
ingressClassName: alb
rules:
- host: demo.alb.ingress.top
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: cloud-nodeport
port:
number: 80
参数 | 描述 | YAML示例 |
alb.ingress.kubernetes.io/backend-keepalive: "true"
| 开启后端长连接。开启后,减少每次请求的 TCP 连接建立和断开,降低资源消耗,提升高性能系统处理能力。 | apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: alb-ingress
annotations:
alb.ingress.kubernetes.io/backend-keepalive: "true"
spec:
|
服务器组支持IPv6挂载
在为服务器组启用IPv6挂载后,如需同时将IPv4和IPv6类型的Pod挂载至服务器组,需确保集群已启用双栈能力,更多详情请参见创建ACK托管集群。
说明 以下是开启IPv6挂载的限制:
如果服务器组所在的VPC未开启IPv6功能,则无法启用服务器组的IPv6挂载功能。
当通过自定义转发动作挂载IP类型或函数计算类型的服务器组时,不支持开启IPv6挂载功能。
关联IPv4类型ALB实例的Ingress,不支持开启服务器组的IPv6挂载功能。
展开查看完整实例YAML
apiVersion: v1
kind: Service
metadata:
name: tea-svc
annotations:
spec:
# 配置双栈时ipFamilies需要配置为IPv4或IPv6,ipFamilyPolicy需要配置为RequireDualStack或PreferDualStack。
ipFamilyPolicy: RequireDualStack
ipFamilies:
- IPv4
- IPv6
ports:
- port: 80
targetPort: 80
protocol: TCP
selector:
app: tea
type: NodePort
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: tea
spec:
replicas: 2
selector:
matchLabels:
app: tea
template:
metadata:
labels:
app: tea
spec:
containers:
- name: tea
image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginxdemos:latest
ports:
- containerPort: 80
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: cafe-ingress
annotations:
alb.ingress.kubernetes.io/enable-ipv6: "true"
spec:
ingressClassName: alb
rules:
- host: demo.alb.ingress.top
http:
paths:
- path: /tea
pathType: Prefix
backend:
service:
name: tea-svc
port:
number: 80
Service 和 ALB Ingress 需按双栈要求进行配置。创建支持双栈的 ALB 实例后,服务器组可同时挂载 IPv4 和 IPv6 类型的后端服务器。
配置对象 | 配置参数 | 取值 | 描述 | YAML示例 |
Service | ipFamilies
| | 指定 Service 可用的 IP 地址类型。 | apiVersion: v1
kind: Service
metadata:
name: tea-svc
annotations:
spec:
# 配置双栈时ipFamilies需要配置为IPv4或IPv6,ipFamilyPolicy需要配置为RequireDualStack或PreferDualStack。
ipFamilyPolicy: RequireDualStack
ipFamilies:
- IPv4
- IPv6
... ...
|
ipFamilyPolicy
| RequireDualStack
PreferDualStack
| 设置 Service 的 IP 策略,支持双栈。 |
ALB Ingress | alb.ingress.kubernetes.io/enable-ipv6
| "true"
| 启用服务器组的 IPv6 挂载功能。 | apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: cafe-ingress
annotations:
alb.ingress.kubernetes.io/enable-ipv6: "true"
spec:
... ...
|
支持QPS限速
ALB本身支持转发规则的QPS限速功能,需配置以下注解即可实现 QPS 限速。
展开查看完整YAML示例
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: cafe-ingress
annotations:
alb.ingress.kubernetes.io/traffic-limit-qps: "50"
spec:
ingressClassName: alb
rules:
- host: demo.alb.ingress.top
http:
paths:
- path: /tea
pathType: ImplementationSpecific
backend:
service:
name: tea-svc
port:
number: 80
- path: /coffee
pathType: ImplementationSpecific
backend:
service:
name: coffee-svc
port:
number: 80
注解 | 描述 | YAML示例 |
alb.ingress.kubernetes.io/traffic-limit-qps
| 设置转发规则的 QPS 限速上限。取值范围:[1,1000000] | apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: cafe-ingress
annotations:
alb.ingress.kubernetes.io/traffic-limit-qps: "50"
spec:
... ...
|
后端慢启动
在新增Pod加入Service后端后,如果ALB Ingress立即将流量分配至新增Pod,可能会导致瞬时的CPU或内存高压,导致访问异常。通过使用慢启动,ALB Ingress可以逐步将流量转移至新增Pod,缓解突发流量造成的影响。配置示例如下:
展开查看完整YAML示例
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
alb.ingress.kubernetes.io/slow-start-enabled: "true"
alb.ingress.kubernetes.io/slow-start-duration: "100"
name: alb-ingress
spec:
ingressClassName: alb
rules:
- host: alb.ingress.alibaba.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: tea-svc
port:
number: 80
参数 | 说明 | YAML示例 |
alb.ingress.kubernetes.io/slow-start-enabled
| 是否启用慢启动功能,默认不开启。 true:启用慢启动功能。
false:不启用慢启动功能。
| apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
alb.ingress.kubernetes.io/slow-start-enabled: "true"
alb.ingress.kubernetes.io/slow-start-duration: "100"
name: alb-ingress
... ...
|
alb.ingress.kubernetes.io/slow-start-duration
| 慢启动完成后,流量逐步增加的时间越长,流量提升的速度越慢。该参数以秒(s)为单位,取值范围为 [30, 900],默认值为 30 秒。 |
连接优雅中断
当Pod进入Terminating状态时,ALB Ingress会将其从后端服务器组中移除,ALB与该Pod已建立的连接不会立即中断,客户端访问时仍持续有请求转发至这些后端服务器,可能会导致Pod内的业务长期无法下线或出现请求错误。为了避免该问题,可以使用ALB的连接优雅中断功能,当Pod被移除或健康检查异常时,ALB Ingress会保持一定时间内的正常传输,并在到达中断时间后主动断开连接,保障业务平稳下线。更多详情,请参见通过ALB连接优雅中断实现业务平稳下线。
重要 在连接优雅中断时间结束前,ALB Ingress无法保证Pod处于运行状态。请为Pod配置spec.terminationGracePeriodSeconds或使用preStop Hook,以控制Pod在Terminating状态中的可用性。
展开查看完整YAML示例
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
alb.ingress.kubernetes.io/connection-drain-enabled: "true"
alb.ingress.kubernetes.io/connection-drain-timeout: "199"
name: alb-ingress
spec:
ingressClassName: alb
rules:
- host: alb.ingress.alibaba.com
http:
paths:
- path: /test
pathType: Prefix
backend:
service:
name: tea-svc
port:
number: 80
参数 | 描述 | YAML示例 |
alb.ingress.kubernetes.io/connection-drain-enabled
| 是否开启连接优雅中断,默认不开启。 true:开启优雅中断。
false:不开启优雅中断。
| apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
alb.ingress.kubernetes.io/connection-drain-enabled: "true"
alb.ingress.kubernetes.io/connection-drain-timeout: "199"
name: alb-ingress
... ...
|
alb.ingress.kubernetes.io/connection-drain-timeout
| 优雅中断超时时间,单位为秒(s),取值范围为 [0, 900],默认值为 300 秒 |
关闭跨可用区(AZ)
默认情况下,ALB启用跨可用区(AZ)的负载均衡,这意味着在同一地域的不同可用区之间,流量会被均匀分配至后端服务。如果关闭了ALB服务器组的跨AZ负载均衡,则流量将仅在同一地域内的同一可用区的后端服务之间分配。
重要 如果您需要关闭跨AZ负载均衡,请确保ALB在每个可用区中都配置可用的后端服务,并确保这些服务器的资源充足。为避免对业务产生影响,请谨慎进行此操作。
您可参照下方的示例配置关闭跨AZ:
展开查看完整YAML示例
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: alb-ingress
namespace: default
annotations:
alb.ingress.kubernetes.io/cross-zone-enabled: "false"
spec:
ingressClassName: alb
rules:
- host: alb.ingress.alibaba.com
http:
paths:
- path: /test
pathType: Prefix
backend:
service:
name: tea-svc
port:
number: 80
参数 | 描述 | YAML示例 |
alb.ingress.kubernetes.io/cross-zone-enabled
| 是否关闭跨AZ转发,默认开启。 true:开启跨AZ转发。
false:关闭跨AZ转发。
| apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: alb-ingress
namespace: default
annotations:
alb.ingress.kubernetes.io/cross-zone-enabled: "false"
... ...
|