全部產品
Search
文件中心

Alibaba Cloud Service Mesh:ASMGlobalRateLimiter CRD說明

更新時間:Jul 31, 2025

ASM通過ASMGlobalRateLimiter實現全域限流的聲明式配置。本文介紹ASMGlobalRateLimiter的欄位說明。

配置樣本

樣本一:服務端限流

說明

本樣本需要執行個體版本≥1.25.6.74。

以下樣本限制了 httpbin 應用 1 分鐘內只能被訪問一次。

展開查看YAML內容

apiVersion: istio.alibabacloud.com/v1
kind: ASMGlobalRateLimiter
metadata:
  name: global-test
spec:
  configs:
  - limit:
      quota: 1
      unit: MINUTE
    target_services:
    - name: httpbin
      port: 8000
    name: default
  applyToTraffic: sidecar_inbound
  rateLimitService:
    host: ratelimit.default.svc.cluster.local # 向該服務查詢當前請求是否需要限流
    port: 8081
    timeout:
      seconds: 5
  workloadSelector:
    labels:
      app: httpbin

樣本二:用戶端限流

說明

本樣本需要執行個體版本≥1.25.6.74。

以下樣本限制了 sleep 應用 1 分鐘內只能訪問一次 httpbin 服務。

展開查看YAML內容

apiVersion: istio.alibabacloud.com/v1
kind: ASMGlobalRateLimiter
metadata:
  name: global-test
spec:
  configs:
  - limit:
      quota: 1
      unit: MINUTE
    target_services:
    - name: httpbin
      port: 8000
    name: default
  applyToTraffic: sidecar_outbound
  rateLimitService:
    host: ratelimit.default.svc.cluster.local # 向該服務查詢當前請求是否需要限流
    port: 8081
    timeout:
      seconds: 5
  workloadSelector:
    labels:
      app: sleep

樣本三:waypoint 限流

本樣本僅適用於Ambient模式,且需要執行個體版本≥1.25.6.74

該樣本配置了應用在名為default的 waypoint 的限流規則,當請求攜帶x-user要求標頭時,會根據不同的值分配 bucket,限制每分鐘只能訪問 1 次,當不攜帶該要求標頭時,則限制每分鐘訪問 20 次。

展開查看YAML內容

apiVersion: istio.alibabacloud.com/v1
kind: ASMGlobalRateLimiter
metadata:
  name: global-test
spec:
  configs:
  - limit_overrides:
    - limit:
        quota: 1
        unit: MINUTE
      request_match:
        header_match:
        - distinct: true
          name: x-user
    limit:
      quota: 20
      unit: MINUTE
    target_services:
    - name: httpbin
      port: 8000
    name: default
  applyToTraffic: waypoint
  rateLimitService:
    host: ratelimit.default.svc.cluster.local # 向該服務查詢當前請求是否需要限流
    port: 8081
    timeout:
      seconds: 5
  workloadSelector:
    labels:
      gateway.networking.k8s.io/gateway-name: default

spec

欄位

類型

是否必選

說明

workloadSelector

map<string, string>

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

isGateway

bool

限流配置生效的工作負載是否為網關,預設為false。

rateLimitService

RateLimitServiceConfig

限流服務配置。

configs

GlobalRateLimiterConfig[]

全域限流配置,可配置多條。

applyToTraffic

string

限流策略應用的流量類型。選擇性參數:

  • sidecar_inbound:sidecar入向流量,即掛載了sidecar的應用作為服務端接收的流量。

  • sidecar_outbound:sidecar出向流量,即掛載了sidecar的應用作為用戶端發送的流量。

  • waypoint:Ambient模式下,通過Waypoint處理的流量。

  • gateway:網關流量。

預設值為sidecar_inbound

說明

該欄位僅支援ASM 1.25及以上版本。

RateLimitServiceConfig

欄位

類型

是否必選

說明

host

string

限流服務Service的叢集網域名稱。

port

int

限流服務的Service gRPC連接埠。

timeout

Duration

網格代理串連限流服務的逾時時間。例如seconds: 1nanos: 1000。nanos表示納秒。

GlobalRateLimiterConfig

欄位

類型

是否必選

說明

name

string

單條限流配置的名稱。

match

RatelimitMatch

匹配條件。

limit

GlobalServiceLimitConfig

限流閾值配置。

limit_overrides

GlobalRateLimitOverrideConfig[]

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

說明

僅支援ASM 1.19.0及以上版本。

target_services

TargetServiceRef[]

限流策略作用的服務。

說明

該欄位僅支援ASM 1.25及以上版本。

TargetServiceRef

說明

此類型欄位僅支援ASM 1.25及以上版本。

欄位

類型

是否必須

說明

kind

string

限流策略作用的服務 kind。可選值:

  • Service

  • ServiceEntry

  • VirtualService

預設為Service

name

string

限流策略作用的服務名稱。

namespace

string

限流策略作用的服務所處的命名空間。預設為您定義的限流策略所處命名空間。

port

int32

限流策略作用的服務連接埠。

section_name

string

服務的額外屬性,當前只對VirtualService生效。

  • VirtualService:取值為VirtualService中定義的 route 名稱。

樣本一

以下樣本定義了 default 命名空間的 httpbin Service 的 8000 連接埠上。

target_services:
- kind: Service
  namespace: default
  name: httpbin
  port: 8000

樣本二

當前執行個體中存在如下 ServiceEntry。

apiVersion: networking.istio.io/v1
kind: ServiceEntry
metadata:
  name: se-httpbin-external
spec:
  hosts:
  - httpbin.test.com
  location: MESH_EXTERNAL
  ports:
  - name: http
    number: 80
    protocol: HTTP
  - name: https
    number: 443
    protocol: HTTPS
  resolution: DNS

以下策略將生效於該 ServiceEntry 的 80 連接埠上。

target_services:
- kind: ServiceEntry
  namespace: default
  name: se-httpbin-external
  port: 80

樣本三

當前執行個體中存在以下 VirtualService。

apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
  name: vs-httpbin
spec:
  hosts:
  - httpbin.test.com
  http:
  - name: default
    route:
    - destination:
        host: httpbin
        port:
          number: 8000

以下策略將生效與 VirtualService 中定義的 http 名為 default 的路由規則上。

target_services:
- kind: VirtualService
  namespace: default
  name: vs-httpbin
  section_name: default

RatelimitMatch

欄位

類型

是否必選

說明

vhost

VirtualHostMatch

VirtualHost匹配條件。

GlobalServiceLimitConfig

欄位

類型

是否必選

說明

unit

string

限流計量時間單位。取值:

  • MINUTE:分

  • SECOND:秒

quota

int

單位時間內允許的請求總量。

GlobalRateLimitOverrideConfig

欄位

類型

是否必選

說明

request_match

RequestMatcher

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

limit

GlobalServiceLimitConfig

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

VirtualHostMatch

欄位

類型

是否必選

說明

name

string

匹配的VirtualHost名稱。

port

int

匹配的請求連接埠。

route

RouteMatch

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

RouteMatch

欄位

類型

是否必選

說明

name_match

string

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

header_match

HeaderMatcher[]

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

說明

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

RequestMatcher

說明

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

欄位

類型

是否必選

說明

header_match

HeaderMatcher[]

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

remote_address

RemoteAddressMatcher

匹配請求的源IP。

query_match

QueryParameterMatcher[]

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

RemoteAddressMatcher

欄位

類型

是否必選

說明

address

string

匹配的請求源的IP地址。

v4_prefix_mask_len

uint32

如果需要匹配IPv4位址範圍,在此欄位填寫IPv4地址子網路遮罩長度,並在address處填寫IPv4地址。將會匹配address在掩碼後的位址範圍。

v6_prefix_mask_len

uint32

如果需要匹配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

  • 配置為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

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

相關文檔

使用ASMGlobalRateLimiter對應用服務入口流量配置全域限流