すべてのプロダクト
Search
ドキュメントセンター

Alibaba Cloud Service Mesh:ASMLocalRateLimiter CRD のフィールド

最終更新日:Nov 06, 2025

Service Mesh (ASM) では、ASMLocalRateLimiter カスタムリソース定義 (CRD) を使用して、ローカルレート制限を宣言的に構成できます。このトピックでは、構成例を示し、ASMLocalRateLimiter のフィールドについて説明します。

構成例

例 1: ゲートウェイのレート制限

次の構成では、ゲートウェイにレート制限を適用して、ダウンストリームサービスが着信トラフィックによって過負荷になるのを防ぎます。seconds1 に、quota100 に設定すると、毎秒 100 個のトークンが発行されます。これは、ゲートウェイが毎秒最大 100 件のリクエストを処理できることを意味します。

説明

構成内の limit.quota は、単一のゲートウェイインスタンスに適用されます。ゲートウェイに n 個のインスタンスがある場合、test1 ルートのバックエンドサービスのレート制限のしきい値は n × quota になります。ゲートウェイインスタンスの数を調整する場合は、レート制限のしきい値も調整する必要があります。

YAML コンテンツを展開して表示

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"   # ゲートウェイに複数のホストドメイン名が構成されている場合は、最後のドメイン名のみを入力する必要があります。
          port: 80
          route:
            name_match: "test1"   # VirtualService ルーティング構成内のルートの名前。VirtualService ルーティング構成に対応する名前のルートが存在しない場合、この構成は有効になりません。
      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

例 2: クライアント側のレート制限

説明

この例では、バージョン 1.25.6.74 以降の ASM インスタンスが必要です。

次の例では、sleep アプリケーションから httpbin サービスへのリクエストを 10 秒ごとに 1 回に制限します。

YAML コンテンツを展開して表示

apiVersion: istio.alibabacloud.com/v1
kind: ASMLocalRateLimiter
metadata:
  name: client-limit
spec:
  configs:
    - limit:
        custom_response_body: '{"ret_code": xxx, "message": "Your request be limited" }'
        fill_interval:
          seconds: 10
        quota: 1
      target_services:
      - name: httpbin
        port: 8000
  applyToTraffic: sidecar_outbound
  workloadSelector:
    labels:
      app: sleep

例 3: サーバー側のレート制限

説明

この例では、バージョン 1.25.6.74 以降の ASM インスタンスが必要です。

次の例では、httpbin アプリケーションへのアクセスを 10 秒ごとに 1 回に制限します。

YAML コンテンツを展開して表示

apiVersion: istio.alibabacloud.com/v1
kind: ASMLocalRateLimiter
metadata:
  name: server-limit
spec:
  configs:
    - limit:
        custom_response_body: '{"ret_code": xxx, "message": "Your request be limited" }'
        fill_interval:
          seconds: 10
        quota: 1
      target_services:
      - name: httpbin
        port: 8000
  applyToTraffic: sidecar_inbound
  workloadSelector:
    labels:
      app: httpbin

例 4: Waypoint のレート制限

次の例では、default という名前の Waypoint が httpbin サービスに転送するリクエストを 10 秒ごとに 1 回のみに制限します。

この例は Ambient モードにのみ適用され、バージョン 1.25.6.74 以降の ASM インスタンスが必要です。

YAML コンテンツを展開して表示

apiVersion: istio.alibabacloud.com/v1
kind: ASMLocalRateLimiter
metadata:
  name: waypoint-limit
spec:
  configs:
    - limit:
        custom_response_body: '{"ret_code": xxx, "message": "Your request be limited" }'
        fill_interval:
          seconds: 10
        quota: 1
      target_services:
      - name: httpbin
        port: 8000
  applyToTraffic: waypoint
  workloadSelector:
    labels:
      gateway.networking.k8s.io/gateway-name: default

フィールドの説明

apiVersion

  • ASM インスタンスのバージョンが 1.15.3.105 以降の場合は、apiVersion: istio.alibabacloud.com/v1 を使用できます。ACK クラスターに既存の構成がある場合は、対応する ASMLocalRateLimiter CRD の apiVersion: istio.alibabacloud.com/v1beta1apiVersion: istio.alibabacloud.com/v1 に変更してから再デプロイしてください。

  • ASM インスタンスのバージョンが 1.15.3.105 より前の場合は、apiVersion: istio.alibabacloud.com/v1beta1 を使用できます。

spec

次の表は、spec セクションのフィールドについて説明しています。ASMLocalRateLimiter の機能と使用例の詳細については、「イングレスゲートウェイのローカルレート制限を構成する」をご参照ください。

フィールド

タイプ

必須

説明

workloadSelector

map<string, string>

はい

レート制限構成が有効になる特定の Pod のセットを指定するために使用される 1 つ以上のラベル。ラベル検索の範囲は、リソースが存在する構成の名前空間に限定されます。詳細については、「Workload Selector」をご参照ください。

isGateway

bool

いいえ

構成がゲートウェイに適用されるかどうかを指定します。デフォルト値は false です。

configs

LocalRateLimiterConfig[]

はい

ローカルレート制限の構成。複数の構成を構成できます。

applyToTraffic

string

いいえ

レート制限ポリシーが適用されるトラフィックタイプ。オプションのパラメーター:

  • sidecar_inbound: サイドカーのインバウンドトラフィック。これは、サーバーとして機能するサイドカーがアタッチされたアプリケーションによって受信されるトラフィックです。

  • sidecar_outbound: サイドカーのアウトバウンドトラフィック。これは、クライアントとして機能するサイドカーがアタッチされたアプリケーションによって送信されるトラフィックです。

  • waypoint: Ambient モードの Waypoint によって処理されるトラフィック。

  • gateway: ゲートウェイのトラフィック。

デフォルト値は sidecar_inbound です。

説明

このフィールドは ASM 1.25 以降のバージョンでのみサポートされます。

LocalRateLimiterConfig

フィールド

タイプ

必須

説明

name

string

はい

単一のレート制限構成の名前。

match

RatelimitMatch

はい

一致条件。

limit

LimitConfig

はい

レート制限のしきい値の構成。

limit_overrides

RateLimitOverrideConfig[]

いいえ

レート制限のしきい値のオーバーライド構成。このフィールドを使用して、特定のリクエストに対して個別のレート制限のしきい値を指定できます。複数のオーバーライド構成を構成できます。

説明

ASM 1.19.0 以降のバージョンでのみサポートされます。

target_services

TargetServiceRef[]

いいえ

レート制限ポリシーが適用されるサービス。

説明

このフィールドは ASM 1.25 以降のバージョンでのみサポートされます。

TargetServiceRef

説明

このフィールドは ASM 1.25 以降のバージョンでのみサポートされます。

フィールド

タイプ

必須

説明

kind

string

いいえ

レート制限ポリシーが適用されるサービスの種類。有効な値:

  • Service

  • ServiceEntry

  • VirtualService

デフォルト値は Service です。

name

string

はい

レート制限ポリシーが適用されるサービスの名前。

namespace

string

いいえ

レート制限ポリシーが適用されるサービスが存在する名前空間。デフォルト値は、レート制限ポリシーを定義する名前空間です。

port

int32

いいえ

レート制限ポリシーが適用されるサービスのポート。

section_name

string

いいえ

サービスの追加プロパティ。このフィールドは VirtualService に対してのみ有効です。

  • VirtualService: 値は VirtualService で定義されたルートの名前です。

例 1

次の例は、default 名前空間の httpbin サービスのポート 8000 に適用されます。

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

例 2

現在のインスタンスに次の 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

例 3

現在のインスタンスに次の 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 の default という名前のルーティングルールに適用されます。

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

RemoteAddressMatcher

フィールド

タイプ

必須

説明

distinct

bool

いいえ

リクエストの異なるソース IP にレート制限を個別に適用するかどうかを指定します。distinct が true に設定されている場合、address は指定できません。

説明

このフィールドは ASM 1.25 以降のバージョンでのみサポートされます。

RatelimitMatch

フィールド

タイプ

必須

説明

vhost

VirtualHostMatch

いいえ

VirtualHost の一致条件。

LimitConfig

フィールド

タイプ

必須

説明

status

int

いいえ

スロットルされたリクエストに対するカスタム HTTP 応答コード。リクエストがスロットルされると、この応答コードが返されます。デフォルト値は 429 です。値は 400 以上である必要があります。

説明

このフィールドは ASM 1.24.6.64 以降のバージョンでサポートされます。

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

いいえ

リクエストがスロットルされたときに返すカスタム応答本文のコンテンツ。

説明

ASM 1.13.4 以降のバージョンでのみサポートされます。

response_header_to_add

map[string]string

いいえ

リクエストがスロットルされたときに追加するカスタムヘッダーのコンテンツ。

説明

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[]

いいえ

一致させるサービスリクエストのヘッダー。複数のヘッダーを構成できます。

重要

ASM 1.19.0 以降のバージョンでは、このフィールドは非推奨です。リクエストを照合するには RateLimitOverrideConfig を使用してください。

RequestMatcher

説明

RequestMatcher では複数のフィールドを同時に使用できます。複数のフィールドを使用する場合、リクエストが一致と見なされるには、すべての一致条件を満たす必要があります。

フィールド

タイプ

必須

説明

header_match

HeaderMatcher[]

いいえ

一致させるリクエストヘッダー。複数のヘッダーを構成できます。

query_match

QueryParameterMatcher[]

いいえ

一致させるリクエストのクエリパラメーター。複数のクエリパラメーターを構成できます。

HeaderMatcher

フィールド

タイプ

必須

説明

name

string

いいえ

ヘッダー名。

次のいずれかを選択します

regex_match

string

いいえ

正規表現一致。

exact_match

string

いいえ

完全一致。

prefix_match

string

いいえ

プレフィックス一致。文字列の先頭に基づいて一致させます。

suffix_match

string

いいえ

サフィックス一致。文字列の末尾に基づいて一致させます。

present_match

bool

いいえ

  • このパラメーターを true に設定すると、値に関係なく、リクエストヘッダーが存在する必要があります。

  • このパラメーターを false に設定すると、リクエストヘッダーは存在してはなりません。

invert_match

bool

いいえ

デフォルト値は false です。

  • このパラメーターを true に設定すると、一致結果が反転します。

  • このパラメーターを false に設定すると、元の一致結果が使用されます。

distinct

bool

いいえ

同じリクエストヘッダーの異なる値に対して個別のレート制限バケットを割り当てるかどうかを指定します。distinct を true に設定した場合、他のマッチタイプは使用できません。

説明

このフィールドは ASM 1.25 以降のバージョンでのみサポートされます。

QueryParameterMatcher

フィールド

タイプ

必須

説明

name

string

はい

クエリパラメーターの名前。

次のいずれかを選択します

exact_match

string

いいえ

クエリパラメーターのコンテンツと完全に一致します。

prefix_match

string

いいえ

クエリパラメーターのコンテンツとプレフィックスが一致します。

suffix_match

string

いいえ

クエリパラメーターのコンテンツとサフィックスが一致します。

regex_match

string

いいえ

クエリパラメーターのコンテンツと正規表現が一致します。

contains_match

string

いいえ

クエリパラメーターのコンテンツの部分一致。これにより、クエリパラメーターのコンテンツに特定のサブストリングが含まれている必要があります。

present_match

bool

いいえ

  • このパラメーターを true に設定すると、存在照合が実行されます。指定されたクエリパラメーターは、その値に関係なく存在する必要があります。

  • このパラメーターを false に設定することはできません。false に設定することは、構成しないことと同じであり、他の一致条件を指定する必要があります。

ignore_case

bool

いいえ

クエリパラメーターを照合する際に大文字と小文字を区別しないかどうかを指定します。