全部產品
Search
文件中心

Alibaba Cloud Service Mesh:ASMLocalRateLimiter CRD說明

更新時間:Jun 30, 2024

ASM通過ASMLocalRateLimiter CRD實現本地限流的聲明式配置。本文介紹ASMLocalRateLimiter的配置樣本和欄位說明。

配置樣本

以下配置表示對網關進行限流,從流量入口處進行限流,防止下遊服務被壓垮。設定seconds1quota100,表示1s內發放100個令牌,即網關1s內最多處理100個請求。

說明

配置中的limit.quota只針對單個網關執行個體生效,若網關有n個執行個體,test1該路由對應的後端服務限流閾值則為n * quota,若調整了網關執行個體個數,需要對應調整限流閾值。

apiVersion: istio.alibabacloud.com/v1beta1
kind: ASMLocalRateLimiter
metadata:
  name: for-api-test
  namespace: default
spec:
  workloadSelector:
    labels:
      app: istio-ingressgateway
  isGateway: true
  configs:
    - match:
        vhost:
          name: "www.example1.com"   # 如果gateway中配置了多個host網域名稱,填寫最後一個即可。
          port: 80
          route:
            name_match: "test1"   # VirtualService路由配置中對應route的name,若VirtualService路由配置下沒有對應name的路由,則不生效。
      limit:
         fill_interval:
            seconds: 1
         quota: 10
    - match:
        vhost:
          name: "www.example2.com"
          port: 80
          route:
            name_match: "test1"
      limit:
         fill_interval:
            seconds: 1
         quota: 100

欄位說明

apiVersion

  • 若ASM執行個體版本為1.15.3.105及以上,支援使用apiVersion: istio.alibabacloud.com/v1。若您在ACK叢集進行了相關配置,請將對應的ASMLocalRateLimiter CRD中的apiVersion: istio.alibabacloud.com/v1beta1修改為apiVersion: istio.alibabacloud.com/v1,再重新進行部署。

  • 若ASM執行個體版本為1.15.3.105以下,支援使用apiVersion: istio.alibabacloud.com/v1beta1

spec

spec欄位配置說明如下。關於ASMLocalRateLimiter的功能介紹和使用樣本,請參見為入口網關配置本地限流

欄位

類型

是否必須

說明

workloadSelector

map<string, string>

通過一個或多個標籤,指明限流配置生效的一組特定的Pod。標籤搜尋的範圍限制在資源所在的配置命名空間。更多資訊,請參見Workload Selector

isGateway

bool

是否作用於網關,預設為false

configs

LocalRateLimiterConfig[]

本地限流配置,可配置多條。

LocalRateLimiterConfig

欄位

類型

是否必須

說明

name

string

單條限流配置的名稱。

match

RatelimitMatch

匹配條件。

limit

LimitConfig

限流閾值配置。

limit_overrides

RateLimitOverrideConfig[]

限流閾值覆蓋配置。可通過該欄位針對特定的請求指定單獨的限流閾值。支援配置多個覆蓋配置。

說明

僅支援ASM 1.19.0及以上版本。

RatelimitMatch

欄位

類型

是否必須

說明

vhost

VirtualHostMatch

VirtualHost匹配條件。

LimitConfig

欄位

類型

是否必須

說明

fill_interval

Duration

令牌填充時間單位,例如seconds: 1或者nanos: 1000nanos表示納秒。

quota

int

令牌數量,必須為整數,例如:1000。

per_downstream_connection

bool

指定速率限制器的令牌桶的範圍。預設為false

取值說明如下:

  • false:令牌桶將在所有背景工作執行緒共用,速率限制將應用於每個Envoy進程。

  • true:為每個串連分配一個令牌桶,速率限制適用於每個串連,允許在每個串連的基礎上對請求進行速率限制。

說明

僅支援ASM 1.13.4及以上版本。

custom_response_body

string

當請求被限制時,自訂返回Body內容。

說明

僅支援ASM 1.13.4及以上版本。

response_header_to_add

map[string]string

當請求被限制時,自訂添加Header內容。

說明

僅支援ASM 1.13.4及以上版本。

RateLimitOverrideConfig

欄位

類型

是否必須

說明

request_match

RequestMatcher

限流閾值覆蓋配置指定的請求匹配條件。只有匹配條件的請求會應用覆蓋配置中的限流閾值。

limit

LimitConfig

限流閾值覆蓋配置指定的請求限流閾值。

說明

當在限流閾值覆蓋配置(RateLimitOverrideConfig)中聲明limit欄位時,只有fill_interval和quota欄位生效,其它欄位(per_downstream_connection、custom_response_body、response_header_to_add)與LocalRateLimiterConfig.limit欄位中的聲明保持一致。

VirtualHostMatch

欄位

類型

是否必須

說明

name

string

匹配的VirtualHost名稱。

port

int

匹配的請求連接埠。

route

RouteMatch

匹配的請求介面對應的路由名稱。

RouteMatch

欄位

類型

是否必須

說明

name_match

string

匹配的路由名稱,對應VirtualService下的單條路由名稱。

header_match

HeaderMatcher[]

匹配服務要求的header,支援配置多個。

重要

在ASM 1.19.0及以上版本,該欄位被標註為廢棄(Deprecated),請使用RateLimitOverrideConfig對請求進行匹配。

RequestMatcher

說明

RequestMatcher中的多個欄位可以同時使用。同時使用時,請求必須同時符合每個欄位的匹配條件才會被匹配。

欄位

類型

是否必須

說明

header_match

HeaderMatcher[]

匹配請求的header,支援配置多個。

query_match

QueryParameterMatcher[]

匹配請求的查詢參數(query params),支援配置多個。

HeaderMatcher

欄位

類型

是否必須

說明

name

string

Header名稱。

任選其一

regex_match

string

Regex匹配。

exact_match

string

精確匹配。

prefix_match

string

首碼匹配,以什麼開頭進行匹配。

suffix_match

string

尾碼匹配,以什麼結尾進行匹配。

present_match

bool

  • 配置為true,表示存在Header即可,無需關注Header Value的取值。

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

invert_match

bool

預設為false

  • 配置為true,表示上述匹配結果取反。

  • 配置為false,表示遵循上述匹配結果。

QueryParameterMatcher

欄位

類型

是否必須

說明

name

string

查詢參數的名稱。

任選其一

exact_match

string

精確匹配查詢參數的內容。

prefix_match

string

首碼匹配查詢參數的內容。

suffix_match

string

尾碼匹配查詢參數的內容。

regex_match

string

Regex匹配查詢參數的內容。

contains_match

string

包含匹配查詢參數的內容,即要求查詢參數的內容必須包含某個子串。

present_match

bool

  • 配置為true,表示進行存在性匹配,即存在指定的查詢參數即可,不關注內容。

  • 不能配置false,配置為false等同於不配置,需要指定其他匹配條件。

ignore_case

bool

是否在匹配查詢參數時忽略大小寫。