Connectivity Link を使用した Gateway ポリシーの設定およびデプロイ
OpenShift での API のセキュリティー、保護、接続
概要
はじめに リンクのコピーリンクがクリップボードにコピーされました!
Red Hat ドキュメントへのフィードバック (英語のみ)
製品ドキュメントに関するご意見をお寄せください。
改善を提案するには、Jira 課題を作成し、変更案を説明してください。ドキュメントチームがご要望に迅速に対応できるよう、できるだけ詳細にご記入ください。
前提条件
- Red Hat カスタマーポータルのアカウントがある。このアカウントを使用すると、Red Hat Jira Software インスタンスにログインできます。アカウントをお持ちでない場合は、アカウントを作成するように求められます。
手順
- Create issue にアクセスします。
- Summary テキストボックスに、問題の簡単な説明を入力します。
Description テキストボックスに、次の情報を入力します。
- 問題が見つかったページの URL。
- 問題の詳細情報。他のフィールドは、そのままデフォルト値にできます。
- Reporter フィールドに Jira ユーザー名を入力します。
- Create をクリックして、Jira 課題をドキュメントチームに送信します。
フィードバックをご提供いただきありがとうございました。
第1章 Connectivity Link を使用した OpenShift 上の API のセキュリティー、保護、接続 リンクのコピーリンクがクリップボードにコピーされました!
このガイドでは、OpenShift 上の Connectivity Link を使用して、Kubernetes Gateway API を使用するゲートウェイによって公開される API を保護および接続する方法を説明します。このガイドは、Connectivity Link のプラットフォームエンジニアおよびアプリケーション開発者のユーザーロールを対象とします。
マルチクラスター環境では、特に除外されていない限り、クラスターごとに次のステップを個別に実行する必要があります。
このガイドには次のセクションが含まれています。
第 2 章から第 7 章の手順は、通常、プラットフォームエンジニアユーザーロールによって実行されます。第 8 章の手順は、通常、アプリケーション開発者ユーザーロールによって実行されます。
1.1. マルチクラスター環境での Connectivity Link 機能 リンクのコピーリンクがクリップボードにコピーされました!
Connectivity Link は、単一または複数の OpenShift クラスターで活用できます。次の機能は、シングルクラスター環境だけでなく、複数のクラスター間でも機能するように設計されています。
-
マルチクラスター Ingress: Connectivity Link は、
DNSPolicy
に定義されたストラテジーを使用してトラフィックをゲートウェイに誘導するために、DNS を使用してマルチクラスター Ingress 接続を提供します。 -
グローバル流量制御: Connectivity Link は、
RateLimitPolicy
で定義された制限に基づいてカウンターに共有 Redis ベースのストアを使用するように設定されている場合、グローバルな流量制御ユースケースに対応しています。 -
グローバル認証: 外部認証プロバイダーを利用するように Connectivity Link
AuthPolicy
を設定して、異なるクラスターが同じ API の認証および認可を同じように公開できます。 -
TLS 証明書の自動生成: cert-manager および ACME プロバイダー (Let's Encrypt など) との統合を使用して、Gateway リスナーホストに基づき TLS 証明書を自動的にプロビジョニングするように、
TLSPolicy
を設定します。 - フェデレーションされたメトリクスストアとの統合: Connectivity Link には、Gateway を可視化し、複数のクラスターをまたいでゲートウェイに到達するトラフィックを観測するためのダッシュボードとメトリクスのサンプルがあります。
1.2. Connectivity Link のユーザーロールワークフロー リンクのコピーリンクがクリップボードにコピーされました!
プラットフォームエンジニア: このガイドでは、安全な通信を提供および保護して、アプリケーション開発チームが API をデプロイするために使用できるゲートウェイをプラットフォームエンジニアがデプロイする方法を説明します。
プラットフォームエンジニアは、異なる地理的リージョンのクラスターで Connectivity Link を使用して、特定のトラフィックを地理的に配置されたゲートウェイに送信できます。このアプローチにより、レイテンシーの短縮、負荷の分散、グローバルな流量制御と認可ポリシーによって保護され、セキュリティーが確保されます。
- アプリケーション開発者: このガイドでは、アプリケーション開発者がゲートウェイレベルのグローバル認証および流量制御ポリシーをオーバーライドして、特定のユーザーに対するアプリケーションレベルの認証および流量制御要件を設定する方法を説明します。
1.3. デプロイメント管理ツール リンクのコピーリンクがクリップボードにコピーされました!
このガイドの例では、kubectl
コマンドを使用して簡素化します。ただし、複数のクラスターの操作は複雑であるため、複数のクラスターへのリソースのデプロイメントを管理するには、Argo CD に基づく OpenShift GitOps などのツールを使用するのが最適です。
第2章 Connectivity Link のインストールと権限を確認する リンクのコピーリンクがクリップボードにコピーされました!
このガイドでは、1 つ以上の OpenShift クラスターに Connectivity Link が正常にインストールされ、適切なユーザー権限があることを想定しています。
前提条件
- OpenShift への Connectivity Link のインストール の説明に従って、1 つ以上のクラスターで Connectivity Link のインストール手順を完了している。
-
kubectl
またはoc
コマンドがインストールされている。 - このガイドで使用する OpenShift namespace への書き込み権限がある。
- このガイドのサンプル用に、Amazon Route 53 と DNS ゾーンを備えた AWS アカウントがある。Connectivity Link は、Google Cloud DNS と Microsoft Azure DNS もサポートしている。
オプション:
- マルチクラスター環境での流量制御のために、複数のクラスターに Connectivity Link をインストールし、アクセス可能な Redis ベースのデータストアを共有している。詳細は、OpenShift への Connectivity Link のインストール を参照してください。
- Observability の場合、Connectivity Link 可観測性ガイド で説明されているように、Thanos などの中央ストレージシステムにリモート書き込みするように、OpenShift ユーザーワークロードの監視を設定する必要があります。
第3章 環境を設定する リンクのコピーリンクがクリップボードにコピーされました!
このセクションでは、環境変数を設定し、OpenShift クラスターにサンプルの Toystore アプリケーションをデプロイする方法を説明します。
前提条件
- 2章Connectivity Link のインストールと権限を確認するを参照してください。
手順
次の環境変数 (便宜上使用する変数) を設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow これらの環境変数の詳細は、以下のとおりです。
-
KUADRANT_GATEWAY_NS
: OpenShift のサンプルゲートウェイの namespace。 -
KUADRANT_GATEWAY_NAME
: OpenShift のサンプルゲートウェイの名前。 -
KUADRANT_DEVELOPER_NS
: OpenShift のサンプルの Toystore アプリケーションの namespace。 -
KUADRANT_AWS_ACCESS_KEY_ID
: DNS ゾーン管理向けのアクセス権を持つ AWS キー ID。 -
KUADRANT_AWS_SECRET_ACCESS_KEY
: DNS ゾーンを管理する権限を持つ AWS シークレットアクセスキー。 -
KUADRANT_AWS_DNS_PUBLIC_ZONE_ID
: ゲートウェイの AWS Route 53 ゾーン ID。これは、AWS Route 53 コンソールに表示されるホストゾーンの ID です。 -
KUADRANT_ZONE_ROOT_DOMAIN
: DNS ゾーン ID に関連付けられた AWS Route 53 のルートドメイン。 KUADRANT_CLUSTER_ISSUER_NAME
: 認証局または発行者の TLS 証明書の名前。注記便宜上、このガイドでは環境変数を使用します。または、環境変数の値がわかっている場合は、環境に合わせて必要な
.yaml
ファイルを設定できます。
-
次のようにして、Toystore アプリケーションの namespace を作成します。
kubectl create ns ${KUADRANT_DEVELOPER_NS}
kubectl create ns ${KUADRANT_DEVELOPER_NS}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Toystore アプリケーションを開発者 namespace にデプロイします。
kubectl apply -f https://raw.githubusercontent.com/Kuadrant/Kuadrant-operator/main/examples/toystore/toystore.yaml -n ${KUADRANT_DEVELOPER_NS}
kubectl apply -f https://raw.githubusercontent.com/Kuadrant/Kuadrant-operator/main/examples/toystore/toystore.yaml -n ${KUADRANT_DEVELOPER_NS}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第4章 DNS プロバイダーシークレットを設定する リンクのコピーリンクがクリップボードにコピーされました!
DNS プロバイダーは、Connectivity Link が DNS 構成設定に使用できる DNS ゾーンにアクセスする認証情報を提供します。これらの認証情報が、Connectivity Link が DNSPolicy を使用して管理する DNS ゾーンにのみアクセスできるようにする必要があります。
各クラスターに次の Secret
リソースを適用する必要があります。クラスターを追加する場合は、新しいクラスターに追加します。
前提条件
- 3章環境を設定するを参照してください。
手順
次のように、ゲートウェイがデプロイされる namespace を作成します。
kubectl create ns ${KUADRANT_GATEWAY_NS}
kubectl create ns ${KUADRANT_GATEWAY_NS}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のように、ゲートウェイと同じ namespace にシークレット認証情報を作成します。
kubectl -n ${KUADRANT_GATEWAY_NS} create secret generic aws-credentials \ --type=kuadrant.io/aws \ --from-literal=AWS_ACCESS_KEY_ID=$KUADRANT_AWS_ACCESS_KEY_ID \ --from-literal=AWS_SECRET_ACCESS_KEY=$KUADRANT_AWS_SECRET_ACCESS_KEY
kubectl -n ${KUADRANT_GATEWAY_NS} create secret generic aws-credentials \ --type=kuadrant.io/aws \ --from-literal=AWS_ACCESS_KEY_ID=$KUADRANT_AWS_ACCESS_KEY_ID \ --from-literal=AWS_SECRET_ACCESS_KEY=$KUADRANT_AWS_SECRET_ACCESS_KEY
Copy to Clipboard Copied! Toggle word wrap Toggle overflow TLS 証明書の発行者を追加する前に、次のように
cert-manager
namespace にシークレットの認証情報を作成します。kubectl -n cert-manager create secret generic aws-credentials \ --type=kuadrant.io/aws \ --from-literal=AWS_ACCESS_KEY_ID=$KUADRANT_AWS_ACCESS_KEY_ID \ --from-literal=AWS_SECRET_ACCESS_KEY=$KUADRANT_AWS_SECRET_ACCESS_KEY
kubectl -n cert-manager create secret generic aws-credentials \ --type=kuadrant.io/aws \ --from-literal=AWS_ACCESS_KEY_ID=$KUADRANT_AWS_ACCESS_KEY_ID \ --from-literal=AWS_SECRET_ACCESS_KEY=$KUADRANT_AWS_SECRET_ACCESS_KEY
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第5章 TLS 証明書発行者を追加する リンクのコピーリンクがクリップボードにコピーされました!
ゲートウェイへの通信をセキュリティーで保護するには、TLS 証明書の発行者として認証局を定義する必要があります。
この例では、Let’s Encrypt TLS 証明書発行者を使用して簡素化していますが、cert-manager
でサポートされている任意の証明書発行者を使用することもできます。マルチクラスター環境では、各 OpenShift クラスターに TLS 発行者を追加する必要があります。
前提条件
- 3章環境を設定するを参照してください。
手順
TLS 証明書の発行者を定義するには、次のコマンドを入力します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ClusterIssuer
の準備が完了するまで待ちます。kubectl wait clusterissuer/${KUADRANT_CLUSTER_ISSUER_NAME} --for=condition=ready=true
kubectl wait clusterissuer/${KUADRANT_CLUSTER_ISSUER_NAME} --for=condition=ready=true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第6章 ゲートウェイインスタンスを作成する リンクのコピーリンクがクリップボードにコピーされました!
このセクションでは、OpenShift クラスターにゲートウェイをデプロイする方法を説明します。このタスクは通常、アプリケーション開発者が使用するインフラストラクチャーをセットアップするときにプラットフォームエンジニアによって実行されます。
マルチクラスター環境では、Connectivity Link がクラスター間で DNS を使用してトラフィックを分散させるには、共有ホスト名を持つゲートウェイを定義する必要があります。これは、root ドメインに基づき、ワイルドカードホスト名で HTTPS リスナーを使用して定義できます。前述のように、これらのリソースをすべてのクラスターに適用する必要があります。
前提条件
- 3章環境を設定するを参照してください。
手順
以下のコマンドを入力してゲートウェイを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のとおり、ゲートウェイのステータスを確認します。
kubectl get gateway ${KUADRANT_GATEWAY_NAME} -n ${KUADRANT_GATEWAY_NS} -o=jsonpath='{.status.conditions[?(@.type=="Accepted")].message}{"\n"}{.status.conditions[?(@.type=="Programmed")].message}'
kubectl get gateway ${KUADRANT_GATEWAY_NAME} -n ${KUADRANT_GATEWAY_NS} -o=jsonpath='{.status.conditions[?(@.type=="Accepted")].message}{"\n"}{.status.conditions[?(@.type=="Programmed")].message}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ゲートウェイは
Accepted
およびProgrammed
である必要があります。これは、ゲートウェイが有効であり、外部アドレスが割り当てられたことを意味します。次のようにして、HTTPS リスナーのステータスを確認します。
kubectl get gateway ${KUADRANT_GATEWAY_NAME} -n ${KUADRANT_GATEWAY_NS} -o=jsonpath='{.status.listeners[0].conditions[?(@.type=="Programmed")].message}'
kubectl get gateway ${KUADRANT_GATEWAY_NAME} -n ${KUADRANT_GATEWAY_NS} -o=jsonpath='{.status.listeners[0].conditions[?(@.type=="Programmed")].message}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow TLS 設定が不適切なため、HTTPS リスナーがまだプログラムされていないか、トラフィックを受け入れる準備ができていないことがわかります。このような場合も、Connectivity Link は TLSPolicy を使用して有効な手段を提供できます。この点は、次のステップで説明しています。
第7章 ゲートウェイポリシーと HTTP ルートを設定する リンクのコピーリンクがクリップボードにコピーされました!
この時点で、ゲートウェイのデプロイは完了していますが、エンドポイントは公開されておらず、HTTPS リスナーはプログラムされていません。次に、CertificateIssuer
を活用して HTTPS リスナー証明書を設定する TLSPolicy
を定義し、バックエンドアプリケーション API と通信するためのゲートウェイの HTTPRoute
を定義できます。
保護されていないエンドポイントに対してデフォルトの HTTP 403
応答を設定する AuthPolicy
と、ゲートウェイによって公開されるエンドポイントをさらに保護するためにデフォルトで人為的に低いグローバル制限を設定する RateLimitPolicy
を定義します。また、ゲートウェイの負荷分散ストラテジーを使用して DNSPolicy
を定義します。
前提条件
- ゲートウェイが、6章ゲートウェイインスタンスを作成する で記載されているようにデプロイされている。
マルチクラスター環境では、特に除外されていない限り、クラスターごとに次のステップを個別に実行する必要があります。
7.1. TLS ポリシーの設定 リンクのコピーリンクがクリップボードにコピーされました!
手順
次のとおり、ゲートウェイの
TLSPolicy
を設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のように、TLS ポリシーのステータスが
Accepted
andEnforced
であることを確認します。kubectl get tlspolicy ${KUADRANT_GATEWAY_NAME}-tls -n ${KUADRANT_GATEWAY_NS} -o=jsonpath='{.status.conditions[?(@.type=="Accepted")].message}{"\n"}{.status.conditions[?(@.type=="Enforced")].message}'
kubectl get tlspolicy ${KUADRANT_GATEWAY_NAME}-tls -n ${KUADRANT_GATEWAY_NS} -o=jsonpath='{.status.conditions[?(@.type=="Accepted")].message}{"\n"}{.status.conditions[?(@.type=="Enforced")].message}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow TLS プロバイダー (例: Let’s Encrypt) によっては、数分かかる場合があります。
7.2. アプリケーションの HTTP ルートを作成する リンクのコピーリンクがクリップボードにコピーされました!
手順
次のようにして、サンプル Toystore アプリケーションの
HTTPRoute
を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ゲートウェイはデプロイされていますが、エンドポイントは現在公開されています。次の手順では、保護されていないエンドポイントに対してデフォルトの HTTP 403 応答を設定する
AuthPolicy
を定義し、公開されているエンドポイントをさらに保護するために、デフォルトで極めて低いグローバル制限を設定するRateLimitPolicy
を定義します。
7.3. デフォルトの AuthPolicy を設定する リンクのコピーリンクがクリップボードにコピーされました!
手順
次のように、ゲートウェイに対して
deny-all
設定のデフォルトのAuthPolicy
を設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のように、
AuthPolicy
のステータスがAccepted
かつEnforced
になっていることを確認します。kubectl get authpolicy ${KUADRANT_GATEWAY_NAME}-auth -n ${KUADRANT_GATEWAY_NS} -o=jsonpath='{.status.conditions[?(@.type=="Accepted")].message}{"\n"}{.status.conditions[?(@.type=="Enforced")].message}'
kubectl get authpolicy ${KUADRANT_GATEWAY_NAME}-auth -n ${KUADRANT_GATEWAY_NS} -o=jsonpath='{.status.conditions[?(@.type=="Accepted")].message}{"\n"}{.status.conditions[?(@.type=="Enforced")].message}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.4. デフォルトの RateLimitPolicy を設定する リンクのコピーリンクがクリップボードにコピーされました!
手順
次のように、ゲートウェイの
low-limit
設定でデフォルトのRateLimitPolicy
を設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記クラスターによっては、
RateLimitPolicy
が適用されるまでに数分間がかかる場合があります。この例では、制限が機能していることを示すために意図的に低く設定されています。次のように、
RateLimitPolicy
のステータスがAccepted
およびEnforced
になっていることを確認します。kubectl get ratelimitpolicy ${KUADRANT_GATEWAY_NAME}-rlp -n ${KUADRANT_GATEWAY_NS} -o=jsonpath='{.status.conditions[?(@.type=="Accepted")].message}{"\n"}{.status.conditions[?(@.type=="Enforced")].message}'
kubectl get ratelimitpolicy ${KUADRANT_GATEWAY_NAME}-rlp -n ${KUADRANT_GATEWAY_NS} -o=jsonpath='{.status.conditions[?(@.type=="Accepted")].message}{"\n"}{.status.conditions[?(@.type=="Enforced")].message}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.5. DNS ポリシーの設定 リンクのコピーリンクがクリップボードにコピーされました!
手順
次のとおり、ゲートウェイの
DNSPolicy
を設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記DNSPolicy
は、これまでの手順で定義した DNS プロバイダーSecret
を使用します。この例のgeo
はGEO-NA
ですが、要件に合わせて変更できます。次のように、
DNSPolicy
のステータスがAccepted
およびEnforced
になっていることを確認します。kubectl get dnspolicy ${KUADRANT_GATEWAY_NAME}-dnspolicy -n ${KUADRANT_GATEWAY_NS} -o=jsonpath='{.status.conditions[?(@.type=="Accepted")].message}{"\n"}{.status.conditions[?(@.type=="Enforced")].message}'
kubectl get dnspolicy ${KUADRANT_GATEWAY_NAME}-dnspolicy -n ${KUADRANT_GATEWAY_NS} -o=jsonpath='{.status.conditions[?(@.type=="Accepted")].message}{"\n"}{.status.conditions[?(@.type=="Enforced")].message}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow これには数分かかる場合があります。
次のように、DNSPolicy で有効になっている DNS ヘルスチェックのステータスを確認します。
kubectl get dnspolicy ${KUADRANT_GATEWAY_NAME}-dnspolicy -n ${KUADRANT_GATEWAY_NS} -
kubectl get dnspolicy ${KUADRANT_GATEWAY_NAME}-dnspolicy -n ${KUADRANT_GATEWAY_NS} -
Copy to Clipboard Copied! Toggle word wrap Toggle overflow これらのヘルスチェックは、定義された設定に基づいて、公開されたエンドポイントを正常または異常としてフラグ付けします。正常でない場合、エンドポイントは DNS プロバイダーにまだ公開されていない場合は公開されません。エンドポイントは、複数値の A レコードの一部である場合にのみ非公開となり、いずれの場合も DNSPolicy ステータスで確認できます。
7.6. デフォルトの流量制御と認証ポリシーをテストする リンクのコピーリンクがクリップボードにコピーされました!
curl
コマンドを使用して、ゲートウェイのデフォルトの low-limit
および deny-all
ポリシーをテストできます。
手順
次の
curl
コマンドを入力します。while :; do curl -k --write-out '%{http_code}\n' --silent --output /dev/null "https://api.$KUADRANT_ZONE_ROOT_DOMAIN/cars" | grep -E --color "\b(429)\b|$"; sleep 1; done
while :; do curl -k --write-out '%{http_code}\n' --silent --output /dev/null "https://api.$KUADRANT_ZONE_ROOT_DOMAIN/cars" | grep -E --color "\b(429)\b|$"; sleep 1; done
Copy to Clipboard Copied! Toggle word wrap Toggle overflow HTTP
403
応答が表示されます。
第8章 認証と流量制御のゲートウェイポリシーをオーバーライドする リンクのコピーリンクがクリップボードにコピーされました!
アプリケーション開発者は、既存のゲートウェイレベルのポリシーをオーバーライドして、アプリケーションレベルの認証と流量制御の要件を設定できます。
前提条件
- Connectivity Link ポリシーが 7章ゲートウェイポリシーと HTTP ルートを設定する の説明に従って設定されている。
8.1. ゲートウェイの deny-all AuthPolicy を上書きする リンクのコピーリンクがクリップボードにコピーされました!
前のセクションで作成した HTTPRoute
リソースを対象とする新しい AuthPolicy
を定義することで、Toystore API への認証済みアクセスを許可できます。
新しい HTTPRoutes は、ゲートウェイレベルの既存ポリシーの影響を受けます。ユーザーがこの API にアクセスできるようにするためには、該当するゲートウェイポリシーをオーバーライドする必要があります。シンプルに API キーを使用してリクエストを認証できますが、OpenID Connect などの他のオプションも利用できます。
手順
Connectivity Link システムの namespace が次のように正しく設定されていることを確認します。
export KUADRANT_SYSTEM_NS=$(kubectl get kuadrant -A -o jsonpath="{.items[0].metadata.namespace}")
export KUADRANT_SYSTEM_NS=$(kubectl get kuadrant -A -o jsonpath="{.items[0].metadata.namespace}")
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のとおり、ユーザーである bob および alice の API キーを定義します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 先ほど作成した
deny-all
ポリシーをオーバーライドし、次のように API キーを受け入れる新しいAuthPolicy
を別の namespace に作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
8.2. 特定のユーザーに対してゲートウェイの low-limit RateLimitPolicy を上書きする リンクのコピーリンクがクリップボードにコピーされました!
設定されたゲートウェイ制限は、一般的なケースに適した制限セットとして使用できます。ただし、Toystore API の開発者は、特定ユーザーのリクエストには具体的な数の制限を、その他のユーザーに対しては汎用の制限を適用することが必要になる場合もあります。
手順
別の名前空間に新しい
RateLimitPolicy
を作成し、以前に作成したデフォルトのlow-limit
ポリシーを上書きして、次のように特定のユーザーの流量制御を設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記クラスターによっては、
RateLimitPolicy
が適用されるまでに数分間がかかる場合があります。次のように、
RateLimitPolicy
のステータスがAccepted
およびEnforced
になっていることを確認します。kubectl get ratelimitpolicy -n ${KUADRANT_DEVELOPER_NS} toystore-rlp -o=jsonpath='{.status.conditions[?(@.type=="Accepted")].message}{"\n"}{.status.conditions[?(@.type=="Enforced")].message}'
kubectl get ratelimitpolicy -n ${KUADRANT_DEVELOPER_NS} toystore-rlp -o=jsonpath='{.status.conditions[?(@.type=="Accepted")].message}{"\n"}{.status.conditions[?(@.type=="Enforced")].message}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow HTTPRoute のステータスが同じ namespace 内の
RateLimitPolicy
の影響を受けるようになったことを確認します。kubectl get httproute toystore -n ${KUADRANT_DEVELOPER_NS} -o=jsonpath='{.status.parents[0].conditions[?(@.type=="kuadrant.io/RateLimitPolicyAffected")].message}'
kubectl get httproute toystore -n ${KUADRANT_DEVELOPER_NS} -o=jsonpath='{.status.parents[0].conditions[?(@.type=="kuadrant.io/RateLimitPolicyAffected")].message}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
8.3. 新しい流量制御と認証ポリシーをテストする リンクのコピーリンクがクリップボードにコピーされました!
次のようにユーザー alice としてリクエストを送信します。
while :; do curl -k --write-out '%{http_code}\n' --silent --output /dev/null -H 'Authorization: APIKEY IAMALICE' "https://api.$KUADRANT_ZONE_ROOT_DOMAIN/cars" | grep -E --color "\b(429)\b|$"; sleep 1; done
while :; do curl -k --write-out '%{http_code}\n' --silent --output /dev/null -H 'Authorization: APIKEY IAMALICE' "https://api.$KUADRANT_ZONE_ROOT_DOMAIN/cars" | grep -E --color "\b(429)\b|$"; sleep 1; done
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 毎秒 HTTP ステータス
200
が 5 秒間、表示され、その後の 5 秒間、毎秒 HTTP ステータス429
が表示されます。次のようにユーザー bob としてリクエストを送信します。
while :; do curl -k --write-out '%{http_code}\n' --silent --output /dev/null -H 'Authorization: APIKEY IAMBOB' "https://api.$KUADRANT_ZONE_ROOT_DOMAIN/cars" | grep -E --color "\b(429)\b|$"; sleep 1; done
while :; do curl -k --write-out '%{http_code}\n' --silent --output /dev/null -H 'Authorization: APIKEY IAMBOB' "https://api.$KUADRANT_ZONE_ROOT_DOMAIN/cars" | grep -E --color "\b(429)\b|$"; sleep 1; done
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 毎秒 HTTP ステータス
200
が 2 秒間、表示され、その後 8 秒間、毎秒 HTTP ステータス429
が表示されます。
付録A Red Hat サブスクリプションの使用 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Connectivity Link は、ソフトウェアサブスクリプションを通じて提供されます。サブスクリプションを管理するには、Red Hat カスタマーポータルでアカウントにアクセスします。
サブスクリプションの管理
- access.redhat.com に移動します。
- アカウントがない場合は作成します。
- アカウントにログインします。
- メニューバーで Subscriptions をクリックし、サブスクリプションを表示および管理します。
改訂日時: 2025-07-11