ALB Ingress 支持通过注解(Annotation)实现更加丰富的 ALB 能力配置。本文主要介绍使用 Annotation 配置 ALB Ingress 的主要场景和配置方法。
注意
注解的内容需要严格区分大小写。
ALB Ingress 支持通过 Annotation 选择监听器,示例和说明如下:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: alb-ingress # 路由规则的名称 namespace: default # 路由规则所属的命名空间 annotations: ingress.vke.volcengine.com/loadbalancer-port: "80" # 监听器端口号 ingress.vke.volcengine.com/loadbalancer-protocol: "http" # 监听器协议。取值:http、https ingress.vke.volcengine.com/loadbalancer-scheduler: "wrr" # 监听器调度算法。取值:wrr(加权轮询)、wlc(加权最小连接数)、sh(源地址哈希) spec: ingressClassName: alb # ALBInstance 的资源名称 rules: - host: example.com # 需要对外提供访问的域名 http: paths: - pathType: Prefix # 路径匹配规则,默认为 Prefix(前缀匹配) path: / # 请求匹配的路径 backend: service: name: service-demo # 需要对接的服务名称 port: number: 80 # 需要对接服务的端口号
Annotation 说明如下表所示。
字段 | 类型 | 描述 | 默认值 |
---|---|---|---|
ingress.vke.volcengine.com/loadbalancer-port | String | ALB 监听器的监听端口,请保证监听器已经配置了对应的监听端口。 | 80 |
ingress.vke.volcengine.com/loadbalancer-protocol | String | ALB 监听器的监听协议。取值:
| http |
ingress.vke.volcengine.com/loadbalancer-scheduler | String | ALB 监听器使用的调度算法。取值:
| wrr |
注意
直通 Pod 模式仅在 VPC-CNI 容器网络模式的集群下生效。
ALB Ingress 支持通过 Annotation 配置直通 Pod 模式,示例和说明如下:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: alb-ingress # 路由规则的名称 namespace: default # 路由规则所属的命名空间 annotations: ingress.vke.volcengine.com/loadbalancer-pass-through: "true" # 配置直通 Pod 模式 spec: ingressClassName: alb # ALBInstance 的资源名称 rules: - host: example.com # 需要对外提供访问的域名 http: paths: - pathType: Prefix # 路径匹配规则,默认为 Prefix(前缀匹配) path: / # 请求匹配的路径 backend: service: name: service-demo # 需要对接的服务名称 port: number: 80 # 需要对接服务的端口号
Annotation 说明如下表所示。
字段 | 类型 | 描述 | 默认值 |
---|---|---|---|
ingress.vke.volcengine.com/loadbalancer-pass-through | String | 是否启用应用型负载均衡器直通 Pod 模式。取值:
| false |
ALB Ingress 支持通过 Annotation 配置健康检查。示例和注解说明如下:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: ingress.vke.volcengine.com/loadbalancer-healthcheck-enabled: "true" # 是否开启健康检查。取值:true、false ingress.vke.volcengine.com/loadbalancer-healthcheck-domain: "example.com" # 健康检查域名 ingress.vke.volcengine.com/loadbalancer-healthcheck-path: "/" # 健康检查路径,默认为 "/"。 ingress.vke.volcengine.com/loadbalancer-healthcheck-method: "GET" # 健康检查方法。取值 GET、HEAD ingress.vke.volcengine.com/loadbalancer-healthcheck-httpcode: "http_2xx,http_3xx" # 健康检查的状态码。取值:http_2xx(默认)、http_3xx(默认)、http_4xx、http_5xx。 ingress.vke.volcengine.com/loadbalancer-healthcheck-timeout: "2" # 等待健康检查响应的时间。取值范围:1~60 秒 ingress.vke.volcengine.com/loadbalancer-healthcheck-interval: "2" # 执行健康检查的时间间隔。取值范围:1~300 秒 ingress.vke.volcengine.com/loadbalancer-healthy-threshold: "3" # 判断后端服务器正常的健康检查次数。取值范围:2~10 次 ingress.vke.volcengine.com/loadbalancer-unhealthy-threshold: "3" # 判断后端服务器异常的健康检查次数。取值范围:2~10 次 name: alb-ingress # 自定义路由规则名称。 namespace: default # 路由规则所属的命名空间。 spec: ingressClassName: alb # ALBInstance 的资源名称 rules: - host: example.com # 需要对外提供访问的域名 http: paths: - pathType: Prefix # 路径匹配规则,默认为 Prefix(前缀匹配) path: / # 请求匹配的路径 backend: service: name: service-demo # 需要对接的服务名称 port: number: 80 # 需要对接服务的端口号
Annotation 说明如下表所示。
字段 | 类型 | 描述 | 默认值 |
---|---|---|---|
ingress.vke.volcengine.com/loadbalancer-healthcheck-enabled | String | 是否开启健康检查。取值:
| true |
ingress.vke.volcengine.com/loadbalancer-healthcheck-domain | String | 健康检查域名。填写后 ALB 会将域名配置到 host 字段中。 | 无 |
ingress.vke.volcengine.com/loadbalancer-healthcheck-path | String | 健康检查路径,默认为/ 。 | / |
ingress.vke.volcengine.com/loadbalancer-healthcheck-method | String | 健康检查的方法。取值:GET、HEAD。 | GET |
ingress.vke.volcengine.com/loadbalancer-healthcheck-httpcode | String | 健康检查正常的状态码。 | http_2xx,http_3xx |
ingress.vke.volcengine.com/loadbalancer-healthcheck-timeout | String | 等待健康检查响应的时间。
| 2 |
ingress.vke.volcengine.com/loadbalancer-healthcheck-interval | String | 执行健康检查的时间间隔。
| 2 |
ingress.vke.volcengine.com/loadbalancer-healthy-threshold | String | 健康检查连续成功多少次后,将后端服务器的健康检查状态由 Fail 判定为 Success。
| 3 |
ingress.vke.volcengine.com/loadbalancer-unhealthy-threshold | String | 健康检查连续失败多少次后,将后端服务器的健康检查状态由 Success 判定为 Fail。
| 3 |
ALB Ingress 支持通过 Annotation 配置指定后端服务组的健康检查,示例和注解说明如下:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: alb-ingress annotations: ingress.vke.volcengine.com/loadbalancer-rules-configs: | [ { "host": "second.example.com", "path": "/", "healthCheck": { "enabled": true, "protocol": "http", "method": "GET", "httpcode": "http_2xx,http_3xx", "timeout": 2, "interval": 2, "healthyThreshold": 3, "unhealthyThreshold": 3 } } ] spec: ingressClassName: alb # ALBInstance 的资源名称 rules: - host: first.example.com http: paths: - pathType: Prefix path: / backend: service: name: service-demo-a port: number: 80 - host: second.example.com http: paths: - pathType: Prefix path: / backend: service: name: service-demo-b port: number: 80
ingress.vke.volcengine.com/loadbalancer-rules-configs
注解中的参数说明如下表所示。
字段 | 类型 | 描述 | 默认值 |
---|---|---|---|
host | String | 匹配健康检查的转发域名。 | 无 |
path | String | 匹配健康检查的转发路径。 | 无 |
healthCheck | Array of healthCheck | 后端服务器组的健康检查规则。 | 无 |
字段 | 类型 | 描述 | 默认值 |
---|---|---|---|
enabled | Boolean | 启用后端服务组健康检查功能。取值:
| 无 |
protocol | String | 健康检查协议,仅支持 http。 | 无 |
method | String | 健康检查方法。取值:GET、HEAD。 | HEAD |
httpcode | String | 健康检查正常的 HTTP 状态码。取值:http_2xx、http_3xx、http_4xx、http_5xx。 | http_2xx,http_3xx |
timeout | Integer | 健康检查的响应超时时间。如果后端服务器在指定的时间内没有正确响应,则判定为健康检查异常。取值范围为 1~60 秒。 注意 响应超时时间需小于等于检查时间间隔。 | 2 |
interval | Integer | 健康检查的时间间隔。取值范围:1~300 秒。 | 2 |
healthyThreshold | Integer | 健康检查的健康阈值。表示连续执行指定次数的健康检查,结果均为正常的后端服务器将判定为健康检查正常。取值范围为 2~10 次。 | 3 |
unhealthyThreshold | Integer | 健康检查的不健康阈值。表示连续执行指定次数的健康检查,结果均为异常的后端服务器将判定为健康检查正常。取值范围为 2~10 次。 | 3 |
说明
【邀测·申请试用】:该功能目前处于 邀测 阶段,如需使用,请提交申请。
ALB Ingress 支持通过 Annotation 配置转发流量限速,示例和注解说明如下:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: ingress.vke.volcengine.com/loadbalancer-rules-configs: | # 配置 ALB Ingress 转发规则的流量限速 [ { "host": "example.com", "path": "/", "trafficLimitQps": 2000 } ] name: alb-ingress # 自定义路由规则名称 namespace: default # 路由规则所属的命名空间 spec: ingressClassName: alb # ALBInstance 的资源名称 rules: - host: example.com # 需要对外提供访问的域名 http: paths: - pathType: Prefix # 路径匹配规则,默认为 Prefix(前缀匹配) path: / # 请求匹配的路径 backend: service: name: service-demo # 需要对接的服务名称 port: number: 80 # 需要对接服务的端口号
ingress.vke.volcengine.com/loadbalancer-rules-configs
注解中的参数说明如下表所示。
字段 | 类型 | 描述 | 默认值 |
---|---|---|---|
host | String | 匹配流量限速的转发域名。 | 无 |
path | String | 匹配流量限速的转发路径。 | 无 |
trafficLimitQps | Integer | 该转发规则的 QPS(每秒请求数)。取值范围为 100~100000 QPS。 说明 若不填写参数值,则表示该转发规则不设置流量限速。 | 无 |
ALB Ingress 支持通过 Annotation 配置转发重定向规则,示例和注解说明如下:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: alb-ingress annotations: ingress.vke.volcengine.com/loadbalancer-rules-configs: | [ { "host": "first.example.com", "path": "/", "ruleAction": "Redirect", "redirectConfig": { "domain": "test.com", "uri": "/docs", "port": 8080, "httpCode": "302", "protocol": "HTTPS" } } ] spec: ingressClassName: alb # ALBInstance 的资源名称 rules: - host: first.example.com http: paths: - pathType: Prefix path: / backend: service: name: redirect # 固定值,表示重定向的服务 port: name: use-annotation # 固定值,表示重定向的服务 - host: second.example.com http: paths: - pathType: Prefix path: / backend: service: name: service port: number: 80
ingress.vke.volcengine.com/loadbalancer-rules-configs
注解中的参数说明如下表所示。
字段 | 类型 | 描述 | 默认值 |
---|---|---|---|
host | String | 匹配重定向规则的转发域名。 | 无 |
path | String | 匹配重定向规则的转发路径。 | 无 |
ruleAction | String | 配置转发规则动作。取值:
| Redirect |
redirectConfig | Array of redirectConfig | 转发重定向规则。 | 无 |
字段 | 类型 | 描述 | 默认值 |
---|---|---|---|
domain | String | 重定向域名。仅支持精确域名。 若该参数不指定,则为默认值(空),最终效果为与请求域名保持一致。 | 无 |
uri | String | 重定向 URI。必须以正斜线/ 开头。仅允许包含字母、数字、- 、_ 、/ 、. 、% 、? 、# 、& 、= 等字符。长度限制为 1~128 个字符。若该参数不指定,则为默认值(空),最终效果为与请求 URI 保持一致。 | 空 |
port | Integer | 重定向端口。取值范围为 1~65535。 若该参数不指定,将赋值为默认值(空),最终效果为与请求端口保持一致。 | 空 |
httpCode | String | 重定向状态码,支持 301、302、307、308。 若该参数不指定,则为默认值 301。 | 301 |
protocol | String | 重定向使用的协议,支持 HTTP、HTTPS。 若该参数不指定,则为默认值 HTTPS 。 | HTTPS |