4.4. ステップ 4 - ゲートウェイの RateLimitPolicy をオーバーライドする


設定されたゲートウェイ制限は、一般的なケースに適した制限セットとして使用できます。ただし、Toystore API の開発者は、特定ユーザーのリクエストには具体的な数の制限を、その他のユーザーに対しては汎用の制限を適用することが必要になる場合もあります。

手順

  1. 次のコマンドを実行して、特定ユーザーに流量制御を設定します。

    kubectl apply -f - <<EOF
    apiVersion: kuadrant.io/v1
    kind: RateLimitPolicy
    metadata:
      name: toystore
    spec:
      targetRef:
        group: gateway.networking.k8s.io
        kind: HTTPRoute
        name: toystore
      limits:
        "general-user":
          rates:
          - limit: 1
            duration: 3
            unit: second
          counters:
          - metadata.filter_metadata.envoy\.filters\.http\.ext_authz.identity.userid
          when:
          - selector: metadata.filter_metadata.envoy\.filters\.http\.ext_authz.identity.userid
            operator: neq
            value: bob
        "bob-limit":
          rates:
          - limit: 2
            duration: 3
            unit: second
          when:
          - selector: metadata.filter_metadata.envoy\.filters\.http\.ext_authz.identity.userid
            operator: eq
            value: bob
    EOF
    注記

    クラスターによっては、RateLimitPolicy が適用されるまでに数分間がかかる場合があります。

    別の例として、bob に対して、その他ユーザーの 2 倍のリクエスト数を付与できます。

  2. 新しいセットアップをテストするには、次のとおり alice としてリクエストを送信します。

    while :; do curl --resolve api.${rootDomain}:443:${INGRESS_HOST} --write-out '%{http_code}\n' --silent --output /dev/null -H 'Authorization: APIKEY IAMALICE' "https://api.${rootDomain}/cars" | grep -E --color "\b(429)\b|$"; sleep 1; done
  3. 次のとおり、bob としてリクエストを送信します。

    while :; do curl --resolve api.${rootDomain}:443:${INGRESS_HOST} --write-out '%{http_code}\n' --silent --output /dev/null -H 'Authorization: APIKEY IAMBOB' "https://api.${rootDomain}/cars" | grep -E --color "\b(429)\b|$"; sleep 1; done
    注記

    プラットフォームエンジニアのワークフローで説明されているとおり、DNS プロバイダーをセットアップして DNSPolicy を設定した場合は、--resolve api.${rootDomain}:443:${INGRESS_HOST} フラグを省略できます。たとえば alice の場合は、次のようになります。

    while :; do curl --write-out '%{http_code}\n' --silent --output /dev/null -H 'Authorization: APIKEY IAMALICE' "https://api.${rootDomain}/cars" | grep -E --color "\b(429)\b|$"; sleep 1; done
    注記

    複数のクラスターでこのガイドの手順を実行すると、HTTPRoute ホスト名の DNS レコードに複数の IP アドレスが含まれるようになります。これは、DNS プロバイダーが異なるレスポンスをルックアップに送信するため、リクエストがクラスターをまたいでラウンドロビンパターンで実行されることを意味します。

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

Red Hat ドキュメントについて

Legal Notice

Theme

© 2026 Red Hat
トップに戻る