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
字段 | 类型 | 是否必须 | 说明 |
name | string | 否 | 单条熔断配置的名称。 |
match | 否 | 匹配条件。 | |
breaker_config | 否 | 路由级熔断配置。 |
CircuitBreakerMatch
字段 | 类型 | 是否必须 | 说明 |
vhost | 否 | VirtualHost匹配条件。 |
BreakerConfig
字段 | 类型 | 是否必须 | 说明 |
window_size | Duration | 否 | 统计时间窗口,默认10s,最大不能超过12s。 |
break_duration | Duration | 否 | 熔断时长,默认30s。 |
slow_request_rt | Duration | 否 | 定义慢请求的响应延迟时间,超过该响应时长的请求则被认定为慢请求。 |
average_request_rt | Duration |
| 定义业务的平均响应时间,例如0.01s。 |
max_slow_requests | uint32 | 否 | 最大慢请求次数,必须为整数,例如:1000。超过该次数的新请求会被熔断。 |
error_percent | 否 | 错误百分比,时间窗口内错误请求(5XX)比例超过该值,则新的请求会被熔断。 | |
min_request_amount | uint32 | 否 | 最少请求次数,对应error_percent条件,默认为0。为了防止误判定被熔断,可配置请求最少次数。 |
custom_response | 否 | 当请求被熔断时,自定义返回内容。 |
CustomResponse
字段 | 类型 | 是否必须 | 说明 |
status_code | int32 | 否 | HTTP响应状态码。 |
header_to_add | map[string]string | 否 | 自定义响应添加的Headers。 |
body | string | 否 | 自定义响应Body内容。 |
VirtualHostMatch
字段 | 类型 | 是否必须 | 说明 |
name | string | 否 | 匹配的VirtualHost名称。 |
port | int | 否 | 匹配的请求端口。 |
route | 是 | 匹配的请求接口对应的路由名称。 |
RouteMatch
字段 | 类型 | 是否必须 | 说明 |
name_match | string |
| 匹配的路由名称,对应VirtualService下的单条路由名称。 |
header_match | 否 | 匹配服务请求的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 | 否 |
| |
invert_match | bool | 否 | 默认为false。
|