ASM通過ASMGlobalRateLimiter實現全域限流的聲明式配置。本文介紹ASMGlobalRateLimiter的欄位說明。
spec
欄位 | 類型 | 是否必選 | 說明 |
workloadSelector | map<string, string> | 是 | 通過一個或多個標籤,指明限流配置生效的一組特定的工作負載。標籤搜尋的範圍限制在資源所在的配置命名空間。更多資訊,請參見Workload Selector。 |
isGateway | bool | 否 | 限流配置生效的工作負載是否為網關,預設為false。 |
rateLimitService | 是 | 限流服務配置。 | |
configs | 是 | 全域限流配置,可配置多條。 |
RateLimitServiceConfig
欄位 | 類型 | 是否必選 | 說明 |
host | string | 是 | 限流服務Service的叢集網域名稱。 |
port | int | 是 | 限流服務的Service gRPC連接埠。 |
timeout | Duration | 否 | 網格代理串連限流服務的逾時時間。例如 |
GlobalRateLimiterConfig
欄位 | 類型 | 是否必選 | 說明 |
name | string | 是 | 單條限流配置的名稱。 |
match | 是 | 匹配條件。 | |
limit | 是 | 限流閾值配置。 | |
limit_overrides | 否 | 限流閾值覆蓋配置。可通過該欄位針對特定的請求指定單獨的限流閾值。支援配置多個覆蓋配置。 說明 僅支援ASM 1.19.0及以上版本。 |
RatelimitMatch
欄位 | 類型 | 是否必選 | 說明 |
vhost | 是 | VirtualHost匹配條件。 |
GlobalServiceLimitConfig
欄位 | 類型 | 是否必選 | 說明 |
unit | string | 是 | 限流計量時間單位。取值:
|
quota | int | 是 | 單位時間內允許的請求總量。 |
GlobalRateLimitOverrideConfig
欄位 | 類型 | 是否必選 | 說明 |
request_match | 是 | 限流閾值覆蓋配置指定的請求匹配條件。只有匹配條件的請求會應用覆蓋配置中的限流閾值。 | |
limit | 是 | 限流閾值覆蓋配置指定的請求限流閾值。 |
VirtualHostMatch
欄位 | 類型 | 是否必選 | 說明 |
name | string | 是 | 匹配的VirtualHost名稱。 |
port | int | 否 | 匹配的請求連接埠。 |
route | 否 | 匹配的請求介面對應的路由名稱。 |
RouteMatch
欄位 | 類型 | 是否必選 | 說明 |
name_match | string | 否 | 匹配的路由名稱,對應VirtualService下的單條路由名稱。 |
header_match | 否 | 匹配服務要求的Header,支援配置多個。 說明 在ASM 1.19.0及以上版本,該欄位被標註為廢棄(Deprecated),請使用GlobalRateLimitOverrideConfig對請求進行匹配。 |
RequestMatcher
RequestMatcher中的多個欄位可以同時使用。同時使用時,請求必須同時符合每個欄位的匹配條件才會被匹配。
欄位 | 類型 | 是否必選 | 說明 |
header_match | 否 | 匹配請求的header,支援配置多個。 | |
remote_address | 否 | 匹配請求的源IP。 | |
query_match | 否 | 匹配請求的查詢參數(query params),支援配置多個。 |
RemoteAddressMatcher
欄位 | 類型 | 是否必選 | 說明 |
address | string | 是 | 匹配的請求源的IP地址。 |
v4_prefix_mask_len | unit32 | 否 | 如果需要匹配IPv4位址範圍,在此欄位填寫IPv4地址子網路遮罩長度,並在address處填寫IPv4地址。將會匹配address在掩碼後的位址範圍。 |
v6_prefix_mask_len | unit32 | 否 | 如果需要匹配IPv6位址範圍,在此欄位填寫IPv6地址子網路遮罩長度,並在address處填寫IPv6地址。將會匹配address在掩碼後的位址範圍。 |
HeaderMatcher
欄位 | 類型 | 是否必選 | 說明 | |
name | string | 否 | Header名稱。 | |
任選其一 | regex_match | string | 否 | Regex匹配。 |
exact_match | string | 否 | 精確匹配。 | |
prefix_match | string | 否 | 首碼匹配,以什麼開頭進行匹配。 | |
suffix_match | string | 否 | 尾碼匹配,以什麼結尾進行匹配。 | |
present_match | bool | 否 |
| |
invert_match | bool | 否 | 預設為false。
|
QueryParameterMatcher
欄位 | 類型 | 是否必選 | 說明 | |
name | string | 是 | 查詢參數的名稱。 | |
任選其一 | exact_match | string | 否 | 精確匹配查詢參數的內容。 |
prefix_match | string | 否 | 首碼匹配查詢參數的內容。 | |
suffix_match | string | 否 | 尾碼匹配查詢參數的內容。 | |
regex_match | string | 否 | Regex匹配查詢參數的內容。 | |
contains_match | string | 否 | 包含匹配查詢參數的內容,即要求查詢參數的內容必須包含某個子串。 | |
present_match | bool | 否 |
| |
ignore_case | bool | 否 | 是否在匹配查詢參數時忽略大小寫。 |