ASMCircuitBreaker CRD说明

ASM通过ASMCircuitBreaker CRD实现熔断的声明式配置。本文介绍ASMCircuitBreaker的字段说明。

apiVersion

  • 若ASM实例版本为1.15.3.105及以上,支持使用apiVersion: istio.alibabacloud.com/v1。若您在ACK集群进行了相关配置,请将对应的ASMCircuitBreaker CRD中的apiVersion: istio.alibabacloud.com/v1beta1修改为apiVersion: istio.alibabacloud.com/v1,再重新进行部署。

  • 若ASM实例版本为1.15.3.105以下,支持使用apiVersion: istio.alibabacloud.com/v1beta1

spec

spec字段配置说明如下。关于ASMCircuitBreaker的功能介绍和使用示例,请参见使用ASM路由级熔断功能

ASMCircuitBreakerSpec

字段

类型

是否必须

说明

workloadSelector

map<string, string>

通过一个或多个标签,指明限流配置生效的一组特定的Pod或VM。标签搜索的范围限制在资源所在的配置命名空间。更多信息,请参见WorkloadSelector

isGateway

bool

配置为true,表示配置作用于网关。默认为false。

configs

CircuitBreakerConfig[]

熔断配置,可配置多条。

CircuitBreakerConfig

字段

类型

是否必须

说明

name

string

单条熔断配置的名称。

match

CircuitBreakerMatch

匹配条件。

breaker_config

BreakerConfig

路由级熔断配置。

CircuitBreakerMatch

字段

类型

是否必须

说明

vhost

VirtualHostMatch

VirtualHost匹配条件。

BreakerConfig

字段

类型

是否必须

说明

window_size

Duration

统计时间窗口,默认10s,最大不能超过12s。

break_duration

Duration

熔断时长,默认30s。

slow_request_rt

Duration

定义慢请求的响应延迟时间,超过该响应时长的请求则被认定为慢请求。

average_request_rt

Duration

  • ASM实例版本为1.14以下:是

  • ASM实例版本为1.14及以上:否

定义业务的平均响应时间,例如0.01s。

max_slow_requests

uint32

最大慢请求次数,必须为整数,例如:1000。超过该次数的新请求会被熔断。

error_percent

Percent

错误百分比,时间窗口内错误请求(5XX)比例超过该值,则新的请求会被熔断。

min_request_amount

uint32

最少请求次数,对应error_percent条件,默认为0。为了防止误判定被熔断,可配置请求最少次数。

custom_response

CustomResponse

当请求被熔断时,自定义返回内容。

CustomResponse

字段

类型

是否必须

说明

status_code

int32

HTTP响应状态码。

header_to_add

map[string]string

自定义响应添加的Headers。

body

string

自定义响应Body内容。

VirtualHostMatch

字段

类型

是否必须

说明

name

string

匹配的VirtualHost名称。

port

int

匹配的请求端口。

route

RouteMatch

匹配的请求接口对应的路由名称。

RouteMatch

字段

类型

是否必须

说明

name_match

string

  • 网关:是

  • Sidecar:否

匹配的路由名称,对应VirtualService下的单条路由名称。

header_match

HeaderMatcher[]

匹配服务请求的Header,支持配置多个。

重要

使用该字段需ASM实例为1.16及以上版本,且对应的网关实例和Sidecar都为最新版。关于如何升级ASM实例和网关实例,请参见升级ASM实例;关于如何升级Sidecar,请参见升级Sidecar代理

HeaderMatcher

字段

类型

是否必须

说明

name

string

Header名称。

任选其一

regex_match

string

正则表达式匹配。

exact_match

string

精确匹配。

prefix_match

string

前缀匹配,以什么开头进行匹配。

suffix_match

string

后缀匹配,以什么结尾进行匹配。

present_match

bool

  • 配置为true,表示存在Header即可,无需关注Header Value的取值。

  • 配置为false,表示不存在Header。

invert_match

bool

默认为false

  • 配置为true,表示上述匹配结果取反。

  • 配置为false,表示遵循上述匹配结果。