ALB Ingress配置词典

您可通过配置AlbConfig资源以自定义ALB实例的配置。本文列举了ALB Ingress支持的Annotation(注解)以及AlbConfig字段的具体内容和用法。

Ingress支持的Annotation

在使用ALB Ingress时,请根据需求将Annotation添加到Ingress类型资源中。

健康检查

Annotation

说明

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-protocolHTTPHTTPS时生效。

  • HTTP1.0

  • HTTP1.1

默认值:HTTP1.1

alb.ingress.kubernetes.io/healthcheck-method

健康检查的方法。

  • HEAD

  • POST

  • GET

默认值:HEAD

重要

healthcheck-protocolGRPC时,需要选择POSTGET

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

    默认值:http_2xx

  • GRPC

    取值范围:[0, 99]。

    默认值:0

    支持范围输入,最多填入20个范围值,多个范围值使用英文半角逗号(,)分隔。

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

说明

0表示使用后端服务器的端口进行健康检查。

重定向

Annotation

说明

alb.ingress.kubernetes.io/ssl-redirect

是否对HTTP请求返回308状态码,重定向到HTTPS监听(443端口)。重定向的配置示例,请参见配置HTTP重定向至HTTPS

  • true:重定向到HTTPS。

  • false:不重定向到HTTPS。

默认值:false

后端服务使用的协议

Annotation

说明

alb.ingress.kubernetes.io/backend-protocol

后端服务器组所使用的协议。配置示例请参见支持后端HTTPS和gRPC协议

  • http:使用HTTP协议。

  • https:使用HTTPS协议。

  • grpc:使用gRPC协议。

默认值:http

说明

各种监听所支持的后端服务器组协议如下:

  • HTTP监听支持HTTP、HTTPS。

  • HTTPS监听支持HTTP、HTTPS、gRPC。

  • QUIC监听支持HTTP。

重写

Annotation

说明

alb.ingress.kubernetes.io/rewrite-target

路径重写的地址。使用重写的配置示例,请参见Rewrite重写

监听

Annotation

说明

alb.ingress.kubernetes.io/listen-ports

Ingress资源关联的监听端口与协议。配置示例请参见配置自定义监听端口

可以填写希望ingress规则配置的监听协议及监听端口(下方为示例):

  • '[{"HTTP": 80}]' :关联80端口的HTTP监听。

  • '[{"HTTPS": 443}]' :关联443端口的HTTPS监听。

  • '[{"QUIC": 443}]' :关联443端口的QUIC监听。

  • '[{"HTTP": 80}, {"HTTPS": 443}]' :同时关联80端口的HTTP监听与443端口的HTTPS监听。

  • '[{"HTTPS": 443}, {"QUIC": 443}]' :同时关联443端口的HTTPS监听与QUIC监听。

慢启动

Annotation

说明

alb.ingress.kubernetes.io/slow-start-enabled

是否启用慢启动功能。启用慢启动后,ALB Ingress在新增Pod被添加到Service后端时,会逐步将流量分配到新增Pod中,以避免造成Pod启动后瞬时CPU与内存高压造成的异常。慢启动的配置示例请参见后端慢启动

  • true:启用慢启动功能。

  • false:不启用慢启动功能。

默认不开启。

alb.ingress.kubernetes.io/slow-start-duration

慢启动完成流量逐步增加所花费的时间,时间越长,流量增加的速度越慢,单位秒(s)。

取值范围:[30, 900]。

默认值:30

优先级

Annotation

说明

alb.ingress.kubernetes.io/order

转发规则的相对优先级,数字越小优先级越高。优先级的配置示例,请参见配置转发规则优先级

取值范围:[1, 1000]。

默认值:10

灰度

Annotation

说明

alb.ingress.kubernetes.io/canary

是否启用Canary灰度。使用Canary进行灰度发布的具体操作,请参见通过ALB Ingress实现灰度发布

  • true:启用灰度。

  • false:不启用灰度。

默认值:false

alb.ingress.kubernetes.io/canary-by-header

启用灰度时所命中的请求标头。

alb.ingress.kubernetes.io/canary-by-header-value

启用灰度时命中的请求标头对应的标头值。

alb.ingress.kubernetes.io/canary-by-cookie

启用灰度时的Cookie标记。

会话保持

Annotation

说明

alb.ingress.kubernetes.io/sticky-session

是否开启后端服务器组会话保持。会话保持的配置示例,请参见通过注解实现会话保持

  • true:开启会话保持。

  • false:不开启会话保持。

默认值:false

alb.ingress.kubernetes.io/sticky-session-type

开启会话保持的类型。

  • Insert:植入Cookie模式。客户端第一次访问时,ALB实例会在返回请求中植入Cookie。

  • Server:重写Cookie模式。当ALB实例发现用户自定义了Cookie,将会对原来的Cookie进行重写。

默认值:Insert

alb.ingress.kubernetes.io/cookie-timeout

会话保持超时时间,单位秒(s)。

取值范围:[1, 86400]。

默认值:1000

连接优雅中断

Annotation

说明

alb.ingress.kubernetes.io/connection-drain-enabled

是否开启连接优雅中断。开启优雅中断后,ALB Ingress在后端Pod进入Terminating状态或健康检查报告异常时保持一定时间的正常传输,在到达超时时间后再中断连接,可以防止后端突然移除对业务的影响。优雅中断的具体工作原理请参见连接优雅中断

  • true:开启优雅中断。

  • false:不开启优雅中断。

默认不开启。

alb.ingress.kubernetes.io/connection-drain-timeout

优雅中断超时时间,单位秒(s)。

取值范围:[0, 900]。

默认值:300

负载均衡

Annotation

说明

alb.ingress.kubernetes.io/backend-scheduler

后端服务器组负载均衡算法。负载均衡算法的配置示例,请参见指定服务器组负载均衡算法

  • wrr:加权轮询。权重值越高的后端服务器,被轮询到的概率越高。

  • wlc:加权最小连接数。当权重值相同时,当前连接数越小的后端服务器被轮询到的概率越高。

  • sch:源IP哈希。相同的源IP地址会调度到相同的后端服务器。

  • uch:URL哈希。相同的URL参数会调度到相同的后端服务器。

默认值:wrr

alb.ingress.kubernetes.io/backend-scheduler-uch-value

负载均衡算法为“uch”时,使用的URL哈希参数。

跨域

Annotation

说明

alb.ingress.kubernetes.io/enable-cors

是否启用跨域配置。配置示例,请参见跨域配置

  • true:启用跨域配置。

  • false:不启用跨域配置。

默认值:false

alb.ingress.kubernetes.io/cors-allow-origin

允许跨域的源。

默认值:*

alb.ingress.kubernetes.io/cors-expose-headers

允许暴露的Header列表。

alb.ingress.kubernetes.io/cors-allow-methods

允许跨域的请求方法。

可以填入以下选项中的任意一个或多个组合:

  • GET

  • POST

  • PUT

  • DELETE

  • HEAD

  • OPTIONS

  • PATCH

默认值:"GET, PUT, POST, DELETE, PATCH, OPTIONS"

alb.ingress.kubernetes.io/cors-allow-credentials

跨域是否允许携带凭证信息。

  • true:允许携带。

  • false:不允许携带。

默认值:true

alb.ingress.kubernetes.io/cors-max-age

预检请求在浏览器中的最大的缓存时间,单位秒(s)。

取值范围:[-1, 172800]。

默认值:172800

说明

-1表示无限缓存时间。

alb.ingress.kubernetes.io/cors-allow-headers

允许跨域的Header列表。

默认值:"DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization"

自定义转发

Annotation

说明

alb.ingress.kubernetes.io/actions.{svcName}

自定义转发动作。自定义转发的具体操作,请参见自定义ALB Ingress的转发规则

alb.ingress.kubernetes.io/conditions.{svcName}

自定义转发条件。

alb.ingress.kubernetes.io/rule-direction.{svcName}

自定义转发方向。

  • Request:接收请求时的自定义转发。

  • Response:响应时的自定义转发。

默认值:Request

其他

Annotation

说明

alb.ingress.kubernetes.io/backend-keepalive

是否启用后端长链接。配置示例请参见后端长连接

默认值:false

alb.ingress.kubernetes.io/traffic-limit-qps

QPS限速配置。

取值范围:[1, 100000]。

alb.ingress.kubernetes.io/use-regex

允许Path字段使用正则,仅在Prefix类型下生效。

默认值:false

AlbConfig字段

AlbConfig是用来描述ALB实例及监听的自定义资源CRD,关于字段的详细描述,请参见下文。

Albconfig

字段

取值类型

说明

apiVersion

固定取值

APIVersion定义了该对象的版本化模式。

固定取值:alibabacloud.com/v1

kind

固定取值

Kind表示该对象所代表的REST资源。

固定取值:AlbConfig

metadata

ObjectMeta

标准对象的metadata。

关于metadata的更多信息,请参见metadata

spec

AlbConfigSpec

用来描述ALB实例属性和监听属性的参数列表。

status

AlbConfigStatus

在调和成功后,会将实例状态写入status中,写入的值表示实例的当前状态。

AlbConfigSpec

字段

取值类型

说明

config

LoadBalancerSpec

ALB实例的属性。

listeners

ListenerSpec[]

实例下的监听属性。

LoadBalancerSpec

字段

取值类型

说明

id

string

ALB实例ID,填写代表启用复用模式。置空表示不指定,会由controller创建一个ALB实例。创建新ALB实例或复用已有实例的具体操作,请参见创建AlbConfig

默认值:""

name

string

ALB实例名。

默认值:使用以下规则自动生成:k8s-{namespace}-{name}-{hashCode}

addressAllocatedMode

enum

ALB实例的地址模式。

  • Dynamic:ALB实例在每个可用区至少有一个IP,随着业务请求的增加,会自动扩展IP数量。此模式下最大支持100万QPS。

  • Fixed:每个可用区有且只有一个IP,并且IP地址保持固定不变。此模式下实例弹性能力有限,最大支持10万QPS。

默认值:Dynamic

addressType

enum

ALB实例的IPv4网段地址类型。

  • Internet:公网模式。会自动拥有一个公网域名。

  • Intranet:私网模式。

默认值:Internet

ipv6AddressType

enum

ALB的IPv6网段地址类型。不需要与IPv4网段地址类型保持一致。

  • Internet:公网模式。会自动拥有一个公网域名。

  • Intranet:私网模式。

默认值:Intranet

addressIpVersion

enum

ALB实例是否支持双栈。

  • IPv4:只支持IPv4。

  • DualStack:双栈,同时支持IPv4与IPv6。

默认值:IPv4

resourceGroupId

string

实例所属的资源组ID。

默认值:""

edition

enum

实例的功能版本。复用模式不支持修改实例的功能版本。

默认值:Standard

deletionProtectionEnabled

bool

保留字段,请勿修改。

forceOverride

bool

复用模式下强制覆盖实例属性。

  • true:强制覆盖。

  • false:不强制覆盖。

  • null:不强制覆盖。

默认值:false

listenerForceOverride

bool

复用模式下强制覆盖监听属性。

  • true:强制覆盖。

  • false:不强制覆盖。

  • null:不强制覆盖。

默认值:null

zoneMappings

ZoneMapping[]

可用区和EIP配置。

accessLogConfig

AccessLogConfig

日志收集。

billingConfig

BillingConfig

计费方式。

modificationProtectionConfig

ModificationProtectionConfig

配置修改保护。

tags

Tag[]

实例标签。

ZoneMapping

字段

取值类型

说明

vSwitchId

string

(必填)虚拟交换机的ID。

默认值:""

zoneId

string

虚拟交换机的可用区。

默认值:""

allocationId

string

弹性公网EIP的ID。

默认值:""

eipType

string

保留字段,请勿修改。

AccessLogConfig

字段

取值类型

说明

logProject

string

SLS日志项目的名称。

默认值:""

logStore

string

SLS日志库的名称,必须以alb_开头。如果不存在此日志库,则会自动创建。SLS日志库的配置示例,请参见开启日志服务访问日志

默认值:""

BillingConfig

字段

取值类型

说明

internetBandwidth

int

保留字段,请勿修改。

internetChargeType

string

保留字段,请勿修改。

payType

enum

保留字段,请勿修改。

bandWidthPackageId

string[]

绑定共享带宽包ID。绑定后不支持解绑。

默认值:""

ModificationProtectionConfig

字段

取值类型

说明

reason

string

保留字段。

status

string

保留字段。

Tag

字段

取值类型

说明

key

string

标签的Key值。

默认值:""

value

string

标签的Value值。

默认值:""

ListenerSpec

字段

取值类型

说明

gzipEnabled

bool

是否开启数据压缩功能。数据压缩的配置示例,请参见使用数据压缩功能

  • true:开启压缩。

  • false:不开启压缩。

  • null:开启压缩。

默认值:null

http2Enabled

bool

是否开启HTTP/2协议。

  • true:开启HTTP/2。

  • false:不开启HTTP/2。

  • null:开启HTTP/2。

默认值:null

port

int

(必填)监听使用的端口。

默认值:0

protocol

enum

(必填)监听使用的协议。

  • HTTP:使用HTTP协议。

  • HTTPS:使用HTTPS协议。

  • QUIC:使用QUIC协议。

securityPolicyId

string

TLS安全策略的ID。

默认值:""

idleTimeout

int

空闲链接超时时间,单位秒(s)。

默认值:15

说明

取值为0,表示使用默认的空闲超时值。

loadBalancerId

string

保留字段,请勿修改。

description

string

监听的名称。

默认值:使用以下规则自动生成:ingress-auto-listener-{port}

caEnabled

bool

是否开启双向认证功能。

  • true:开启双向认证。

  • false:不开启双向认证。

默认值:false

requestTimeout

int

请求超时时间,单位秒(s)。

默认值:60

quicConfig

QuicConfig

Quic监听配置。

defaultActions

Action[]

保留字段,请勿修改。

caCertificates

Certificate[]

监听的根CA证书。

certificates

Certificate[]

监听的服务器证书。

xForwardedForConfig

XForwardedForConfig

XForward字段配置信息。

logConfig

LogConfig

监听日志相关配置。

aclConfig

AclConfig

访问控制。

QuicConfig

字段

取值类型

说明

quicUpgradeEnabled

bool

是否开启QUIC升级。在联合使用QUIC与HTTPS监听的场景中,quicUpgradeEnabled用于关联或解关联QUIC与HTTPS监听。详细操作,请参见使用QUIC监听兼容HTTP/3协议

  • true:开启QUIC升级,关联QUIC与HTTPS监听。

  • false:不开启QUIC升级,不关联QUIC与HTTPS监听。

默认值:false

quicListenerId

string

QUIC监听关联的HTTPS监听。

默认值:""

Certificate

字段

取值类型

说明

IsDefault

bool

指定证书是否为默认证书。配置证书的具体操作,请参见配置HTTPS证书以实现加密通信

  • true:指定为默认证书。

  • false:不指定为默认证书。

默认值:false

重要

仅支持指定一个证书为默认证书。

CertificateId

string

证书的CertIdentifier。

默认值:""

XForwardedForConfig

字段

取值类型

说明

XForwardedForClientCertSubjectDNEnabled

bool

是否在经过ALB实例转发的HTTP报文的请求头中添加X-Forwarded-Clientcert-subjectdn字段,以保留客户端证书的所有者信息。

  • true:添加字段。

  • false:不添加字段。

默认值:false

XForwardedForProtoEnabled

bool

是否在经过ALB实例转发的HTTP报文的请求头中添加X-Forwarded-Proto字段,以记录ALB实例所使用的监听协议。

  • true:添加字段。

  • false:不添加字段。

默认值:false

XForwardedForClientCertIssuerDNEnabled

bool

是否在经过ALB实例转发的HTTP报文的请求头中添加X-Forwarded-Clientcert-issuerdn字段,以保留客户端证书的发行者信息。

  • true:添加字段。

  • false:不添加字段。

默认值:false

XForwardedForSLBIdEnabled

bool

是否在经过ALB实例转发的HTTP报文的请求头中添加X-Forwarded-For-SLB-ID字段,以记录ALB实例的ID。

  • true:添加字段。

  • false:不添加字段。

默认值:false

XForwardedForClientSrcPortEnabled

bool

是否在经过ALB实例转发的HTTP报文的请求头中添加X-Forwarded-Client-Port字段,以保留客户端的端口信息。

  • true:添加字段。

  • false:不添加字段。

默认值:false

XForwardedForClientCertFingerprintEnabled

bool

是否在经过ALB实例转发的HTTP报文的请求头中添加X-Forwarded-Clientcert-fingerprint字段,以保留客户端证书的指纹取值信息。

  • true:添加字段。

  • false:不添加字段。

默认值:false

XForwardedForEnabled

bool

是否在经过ALB实例转发的HTTP报文的请求头中添加X-Forwarded-For字段,以保留客户端真实IP信息。该功能暂不支持关闭。

XForwardedForSLBPortEnabled

bool

是否在经过ALB实例转发的HTTP报文的请求头中添加X-Forwarded-Port字段,以记录ALB实例的监听端口。

  • true:添加字段。

  • false:不添加字段。

默认值:false

XForwardedForClientCertClientVerifyEnabled

bool

是否在经过ALB实例转发的HTTP报文的请求头中添加X-Forwarded-Clientcert-clientverify字段,以保留客户端证书的校验结果。

  • true:添加字段。

  • false:不添加字段。

默认值:false

XForwardedForClientCertSubjectDNAlias

string

自定义字段名称。填入值后,会将XForwardedForClientCertSubjectDNEnabled添加的X-Forwarded-Clientcert-subjectdn字段名称替换为填入的值。

仅当XForwardedForClientCertSubjectDNEnabled的值为true时,该字段才会生效。

默认值:""

XForwardedForClientCertClientVerifyAlias

string

自定义字段名称。填入值后,会将XForwardedForClientCertClientVerifyEnabled添加的X-Forwarded-Clientcert-clientverify字段名称替换为填入的值。

仅当XForwardedForClientCertClientVerifyEnabled的值为true的时候,该字段才会生效。

默认值:""

XForwardedForClientCertIssuerDNAlias

string

自定义字段名称。填入值后,会将XForwardedForClientCertIssuerDNEnabled添加的X-Forwarded-Clientcert-issuerdn字段名称替换为填入的值。

仅当XForwardedForClientCertIssuerDNEnabled的值为true的时候,此字段才会生效。

默认值:""

XForwardedForClientCertFingerprintAlias

string

自定义字段名称。填入值后,会将XForwardedForClientCertFingerprintEnabled添加的X-Forwarded-Clientcert-fingerprint字段名称替换为填入的值。

仅当XForwardedForClientCertFingerprintEnabled的值为true时,该字段才会生效。

默认值:""

XForwardedForClientSourceIpsEnabled

bool

是否允许ALB从X-Forwarded-For头字段中查找真实客户端 IP。

  • true:允许。此时必须配置XForwardedForClientSourceIpsTrusted并写入格式正确的内容。

  • false:不允许。

默认值:false

XForwardedForClientSourceIpsTrusted

string

指定可信的代理IP。

请输入正确格式的IP或网段,并以英文半角分号;分隔,IP或网段之间无需添加空格。仅在XForwardedForClientSourceIpsEnabledtrue时生效。

  • 可信IP列表设置为0.0.0.0/0:获取X-Forwarded-For请求标头中最左边的地址,即真实客户端源IP。

  • 可信IP列表设置为proxy1 IP; proxy2 IP,..:从右往左获取第一个不在列表中的值,并将其作为真实客户端源IP。

示例值:192.168.x.x;192.168.x.x/16

AclConfig

字段

取值类型

说明

aclName

string

AclEntry模式下关联的ACL策略名。配置ACL的具体操作,请参见配置ACL实现访问控制

默认值:""

aclType

enum

访问控制的模式。

  • Black:黑名单模式,阻止特定IP访问服务。

  • White:白名单模式,只允许特定IP访问服务。

aclEntries

string[]

访问策略条目。

默认值:""

重要

aclEntriesaclIds字段不能同时使用。更多信息,请参见配置ACL实现访问控制

aclIds

string[]

关联已经存在的策略ID列表。

默认值:""

LogConfig

字段

取值类型

说明

accessLogRecordCustomizedHeadersEnabled

bool

是否在ALB实例的访问日志中使用自定义Header。

  • true:使用自定义Header。

  • false:不使用自定义Header。

默认值:false

accessLogTracingConfig

AccessLogTracingConfig

链路追踪相关配置参数。链路追踪的具体操作,请参见通过Albconfig开启Xtrace实现链路追踪

AccessLogTracingConfig

字段

取值类型

说明

tracingEnabled

bool

是否启用链路追踪功能。

  • true:开启链路追踪。

  • false:不开启链路追踪。

默认值:false

tracingSample

int

链路追踪采样率,单位为0.01%

取值范围:[1, 10000]。

tracingType

enum

链路追踪的采样算法。

  • Zipkin:使用Zipkin算法。

AlbConfigStatus

重要

下方的AlbConfigStatusLoadBalancerStatusListenerStatusAppliedCertificate字段都为保留字段,为ALB Ingress自动记录状态使用,请勿进行修改。

字段

输出内容

说明

loadBalancer

LoadBalancerStatus

保留字段,请勿修改。

ALB实例的状态。

LoadBalancerStatus

字段

输出内容

说明

dnsname

string

保留字段,请勿修改。

ALB实例的DNS地址。

id

string

保留字段,请勿修改。

ALB实例的ID。

listeners

ListenerStatus

保留字段,请勿修改。

ALB实例的监听属性。

ListenerStatus

字段

输出内容

说明

portAndProtocol

string

保留字段,请勿修改。

监听使用的端口与协议。

certificates

AppliedCertificate

保留字段,请勿修改。

监听关联的证书。

AppliedCertificate

字段

输出内容

说明

certificateId

string

保留字段,请勿修改。

证书的CertIdentifier。

isDefault

bool

保留字段,请勿修改。

证书是否为默认证书。

相关文档