ASMCircuitBreaker CRD說明
ASM通過ASMCircuitBreaker CRD實(shí)現(xiàn)熔斷的聲明式配置。本文介紹ASMCircuitBreaker的字段說明。
apiVersion
若ASM實(shí)例版本為1.15.3.105及以上,支持使用
apiVersion: istio.alibabacloud.com/v1
。若您在ACK集群進(jìn)行了相關(guān)配置,請(qǐng)將對(duì)應(yīng)的ASMCircuitBreaker CRD中的apiVersion: istio.alibabacloud.com/v1beta1
修改為apiVersion: istio.alibabacloud.com/v1
,再重新進(jìn)行部署。若ASM實(shí)例版本為1.15.3.105以下,支持使用
apiVersion: istio.alibabacloud.com/v1beta1
。
spec
spec字段配置說明如下。關(guān)于ASMCircuitBreaker的功能介紹和使用示例,請(qǐng)參見使用ASM路由級(jí)熔斷功能。
ASMCircuitBreakerSpec
字段 | 類型 | 是否必須 | 說明 |
workloadSelector | map<string, string> | 是 | 通過一個(gè)或多個(gè)標(biāo)簽,指明限流配置生效的一組特定的Pod或VM。標(biāo)簽搜索的范圍限制在資源所在的配置命名空間。更多信息,請(qǐng)參見WorkloadSelector。 |
isGateway | bool | 否 | 配置為true,表示配置作用于網(wǎng)關(guān)。默認(rèn)為false。 |
configs | 是 | 熔斷配置,可配置多條。 |
CircuitBreakerConfig
字段 | 類型 | 是否必須 | 說明 |
name | string | 否 | 單條熔斷配置的名稱。 |
match | 否 | 匹配條件。 | |
breaker_config | 否 | 路由級(jí)熔斷配置。 |
CircuitBreakerMatch
字段 | 類型 | 是否必須 | 說明 |
vhost | 否 | VirtualHost匹配條件。 |
BreakerConfig
字段 | 類型 | 是否必須 | 說明 |
window_size | Duration | 否 | 統(tǒng)計(jì)時(shí)間窗口,默認(rèn)10s,最大不能超過12s。 |
break_duration | Duration | 否 | 熔斷時(shí)長(zhǎng),默認(rèn)30s。 |
slow_request_rt | Duration | 否 | 定義慢請(qǐng)求的響應(yīng)延遲時(shí)間,超過該響應(yīng)時(shí)長(zhǎng)的請(qǐng)求則被認(rèn)定為慢請(qǐng)求。 |
average_request_rt | Duration |
| 定義業(yè)務(wù)的平均響應(yīng)時(shí)間,例如0.01s。 |
max_slow_requests | uint32 | 否 | 最大慢請(qǐng)求次數(shù),必須為整數(shù),例如:1000。超過該次數(shù)的新請(qǐng)求會(huì)被熔斷。 |
error_percent | 否 | 錯(cuò)誤百分比,時(shí)間窗口內(nèi)錯(cuò)誤請(qǐng)求(5XX)比例超過該值,則新的請(qǐng)求會(huì)被熔斷。 | |
min_request_amount | uint32 | 否 | 最少請(qǐng)求次數(shù),對(duì)應(yīng)error_percent條件,默認(rèn)為0。為了防止誤判定被熔斷,可配置請(qǐng)求最少次數(shù)。 |
custom_response | 否 | 當(dāng)請(qǐng)求被熔斷時(shí),自定義返回內(nèi)容。 |
CustomResponse
字段 | 類型 | 是否必須 | 說明 |
status_code | int32 | 否 | HTTP響應(yīng)狀態(tài)碼。 |
header_to_add | map[string]string | 否 | 自定義響應(yīng)添加的Headers。 |
body | string | 否 | 自定義響應(yīng)Body內(nèi)容。 |
VirtualHostMatch
字段 | 類型 | 是否必須 | 說明 |
name | string | 否 | 匹配的VirtualHost名稱。 |
port | int | 否 | 匹配的請(qǐng)求端口。 |
route | 是 | 匹配的請(qǐng)求接口對(duì)應(yīng)的路由名稱。 |
RouteMatch
字段 | 類型 | 是否必須 | 說明 |
name_match | string |
| 匹配的路由名稱,對(duì)應(yīng)VirtualService下的單條路由名稱。 |
header_match | 否 | 匹配服務(wù)請(qǐng)求的Header,支持配置多個(gè)。 重要 使用該字段需ASM實(shí)例為1.16及以上版本,且對(duì)應(yīng)的網(wǎng)關(guān)實(shí)例和Sidecar都為最新版。關(guān)于如何升級(jí)ASM實(shí)例和網(wǎng)關(guān)實(shí)例,請(qǐng)參見升級(jí)ASM實(shí)例;關(guān)于如何升級(jí)Sidecar,請(qǐng)參見升級(jí)Sidecar代理。 |
HeaderMatcher
字段 | 類型 | 是否必須 | 說明 | |
name | string | 否 | Header名稱。 | |
任選其一 | regex_match | string | 否 | 正則表達(dá)式匹配。 |
exact_match | string | 否 | 精確匹配。 | |
prefix_match | string | 否 | 前綴匹配,以什么開頭進(jìn)行匹配。 | |
suffix_match | string | 否 | 后綴匹配,以什么結(jié)尾進(jìn)行匹配。 | |
present_match | bool | 否 |
| |
invert_match | bool | 否 | 默認(rèn)為false。
|