ALB Ingress 支持通过注解(Annotation)实现更加丰富的 ALB 能力配置。本文主要介绍使用 Annotation 配置 ALB Ingress 的主要场景和配置方法。
注意
注解的内容需要严格区分大小写。
说明
使用 Annotation 选择 ALB 实例的监听器前,您需要首先通过 ALBInstacne 创建或关联对应的 ALB 实例和监听器。配置方式,请参见 通过 kubectl 创建 ALB Ingress。
ALB Ingress 支持通过 Annotation 选择由 ALBInstace 创建好的单个监听器,并在指定监听器下创建相应的转发规则和后端服务器组。示例和说明如下:
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 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 | 选择单个监听器的监听端口,请保证监听器已经配置了对应的监听端口。 | 80 |
ingress.vke.volcengine.com/loadbalancer-protocol | String | 选择单个监听器的监听协议。取值:
| http |
说明
ALB Ingress 支持通过 Annotation 选择由 ALBInstace 创建好的多个监听器,并在指定监听器下创建相应的转发规则和后端服务器组。示例和说明如下:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: alb-ingress # 路由规则的名称 namespace: default # 路由规则所属的命名空间 annotations: ingress.vke.volcengine.com/listen-ports: '[{"HTTP": 80},{"HTTPS": 443}]' # 选择多监听器,包括监听协议和端口号 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/listen-ports | Array of String | 选择多监听器的协议和端口号,例如 说明
| 无 |
ALB Ingress 支持通过 Annotation 配置调度算法,示例和说明如下:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: alb-ingress # 路由规则的名称 namespace: default # 路由规则所属的命名空间 annotations: 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-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 |