3scale API Management を Streams for Apache Kafka Bridge とともに使用
3scale で利用可能な機能を使用する
概要
はじめに リンクのコピーリンクがクリップボードにコピーされました!
Red Hat ドキュメントへのフィードバック (英語のみ) リンクのコピーリンクがクリップボードにコピーされました!
Red Hat ドキュメントに関するご意見やご感想をお寄せください。
改善を提案するには、Jira 課題を作成し、変更案を説明してください。ご要望に迅速に対応できるよう、できるだけ詳細にご記入ください。
前提条件
-
Red Hat カスタマーポータルのアカウントがある。このアカウントを使用すると、Red Hat Jira Software インスタンスにログインできます。
アカウントをお持ちでない場合は、アカウントを作成するように求められます。
手順
- 以下の Create issue をクリックします。
- Summary テキストボックスに、問題の簡単な説明を入力します。
Description テキストボックスに、次の情報を入力します。
- 問題が見つかったページの URL。
-
問題の詳細情報
他のフィールドの情報はデフォルト値のままにすることができます。
- レポーター名を追加します。
- Create をクリックして、Jira 課題をドキュメントチームに送信します。
フィードバックをご提供いただきありがとうございました。
第1章 3scale API Management リンクのコピーリンクがクリップボードにコピーされました!
Kafka Bridge を OpenShift Container Platform にデプロイした場合は、3scale で使用できます。
Kafka Bridge のプレーンデプロイメントでは、認証または認可のプロビジョニングがなく、TLS 暗号化による外部クライアントへの接続はサポートされません。3scale API Management は、TLS を使用して Kafka Bridge を保護し、認証および認可を提供できます。また、3scale との統合により、メトリック、流量制御、請求などの追加機能も利用できるようになります。
3scale では、Streams for Apache Kafka にアクセスしようとする外部クライアントからのリクエストに対して、さまざまなタイプの認証を使用できます。3scale では、以下のタイプの認証がサポートされます。
- 標準 API キー
- 識別子およびシークレットトークンとして機能する、ランダムな単一文字列またはハッシュ。
- アプリケーション ID とキーのペア
- イミュータブルな識別子およびミュータブルなシークレットキー文字列。
- OpenID Connect
- 委譲された認証のプロトコル。
1.1. Kafka Bridge のサービスディスカバリー リンクのコピーリンクがクリップボードにコピーされました!
3scale はサービスディスカバリーを使用して統合されます。そのためには、3scale を Streams for Apache Kafka および Kafka Bridge と同じ OpenShift クラスターにデプロイする必要があります。
Streams for Apache Kafka Cluster Operator のデプロイメントで、次の環境変数を設定する必要があります。
- STRIMZI_CUSTOM_KAFKA_BRIDGE_SERVICE_LABELS
- STRIMZI_CUSTOM_KAFKA_BRIDGE_SERVICE_ANNOTATIONS
Kafka Bridge をデプロイすると、Kafka Bridge の REST インターフェイスを公開するサービスは、3scale による検出にアノテーションとラベルを使用します。
-
3scale によって
discovery.3scale.net=trueラベルが使用され、サービスが検出されます。 - アノテーションによってサービスに関する情報が提供されます。
OpenShift コンソールで設定を確認するには、Kafka Bridge インスタンスの Services に移動します。Annotations に、Kafka Bridge の OpenAPI 仕様へのエンドポイントが表示されます。
1.2. 3scale APIcast ゲートウェイポリシー リンクのコピーリンクがクリップボードにコピーされました!
3scale は 3scale APIcast と組み合わせて使用されます。これは、3scale と共にデプロイされた API ゲートウェイであり、Kafka Bridge への単一のエントリーポイントを提供します。
APIcast ポリシーは、ゲートウェイの動作をカスタマイズするメカニズムを提供します。3scale には、ゲートウェイ設定のための標準ポリシーのセットが含まれています。また、独自のポリシーを作成することもできます。
APIcast ポリシーの詳細は、Red Hat 3Scale のドキュメント を参照してください。
Kafka Bridge の APIcast ポリシー
3scale と Kafka Bridge との統合のポリシー設定例は policies_config.json ファイルに含まれており、このファイルでは以下を定義します。
- Anonymous Access
- Header Modification
- Routing
- URL Rewriting
ゲートウェイポリシーは、このファイルを使用して有効または無効に設定します。
この例をひな形として使用し、独自のポリシーを定義できます。
- Anonymous Access
- Anonymous Access ポリシーでは、認証をせずにサービスが公開され、HTTP クライアントがデフォルトのクレデンシャル (匿名アクセス用) を提供しない場合に、このポリシーによって提供されます。このポリシーは必須ではなく、認証が常に必要であれば無効または削除できます。
- Header Modification
Header Modification ポリシーを使用すると、既存の HTTP ヘッダーを変更したり、ゲートウェイを通過するリクエストまたはレスポンスへ新規ヘッダーを追加したりできます。3scale の統合では、このポリシーによって、HTTP クライアントから Kafka Bridge までゲートウェイを通過するすべてのリクエストにヘッダーが追加されます。
Kafka Bridge は、新規コンシューマー作成のリクエストを受け取ると、URI のある
base_uriフィールドが含まれる JSON ペイロードを返します。コンシューマーは後続のすべてのリクエストにこの URI を使用する必要があります。以下に例を示します。{ "instance_id": "consumer-1", "base_uri":"http://my-bridge:8080/consumers/my-group/instances/consumer1" }{ "instance_id": "consumer-1", "base_uri":"http://my-bridge:8080/consumers/my-group/instances/consumer1" }Copy to Clipboard Copied! Toggle word wrap Toggle overflow APIcast を使用する場合、クライアントは以降のリクエストをすべてゲートウェイに送信し、Kafka Bridge には直接送信しません。そのため URI には、ゲートウェイの背後にある Kafka Bridge のアドレスではなく、ゲートウェイのホスト名が必要です。
Header Modification ポリシーを使用すると、ヘッダーが HTTP クライアントからリクエストに追加されるため、Kafka Bridge はゲートウェイホスト名を使用します。
たとえば、
Forwarded: host=my-gateway:80;proto=httpヘッダーを適用すると、Kafka Bridge は以下をコンシューマーに提供します。{ "instance_id": "consumer-1", "base_uri":"http://my-gateway:80/consumers/my-group/instances/consumer1" }{ "instance_id": "consumer-1", "base_uri":"http://my-gateway:80/consumers/my-group/instances/consumer1" }Copy to Clipboard Copied! Toggle word wrap Toggle overflow X-Forwarded-Pathヘッダーには、クライアントからゲートウェイへのリクエストに含まれる元のパスが含まれています。このヘッダーは、ゲートウェイが複数の Kafka Bridge インスタンスをサポートする場合に適用される Routing ポリシーに密接に関連付けられています。- Routing
Routing ポリシーは、複数の Kafka Bridge インスタンスがある場合に適用されます。コンシューマーが最初に作成された Kafka Bridge インスタンスにリクエストを送信する必要があるため、適切な Kafka Bridge インスタンスにリクエストを転送するようゲートウェイのルートをリクエストに指定する必要があります。
Routing ポリシーは各ブリッジインスタンスに名前を付け、ルーティングはその名前を使用して実行されます。Kafka Bridge のデプロイ時に、
KafkaBridgeカスタムリソースで名前を指定します。たとえば、コンシューマーから以下への各リクエスト (
X-Forwarded-Pathを使用) について考えてみましょう。http://my-gateway:80/my-bridge-1/consumers/my-group/instances/consumer1この場合、各リクエストは以下に転送されます。
http://my-bridge-1-bridge-service:8080/consumers/my-group/instances/consumer1URL Rewriting ポリシーはブリッジ名を削除しますが、これは、リクエストをゲートウェイから Kafka Bridge に転送するときにこのポリシーが使用されないためです。
- URL Rewriting
URL Rewiring ポリシーは、ゲートウェイから Kafka Bridge にリクエストが転送されるとき、クライアントから特定の Kafka Bridge インスタンスへのリクエストにブリッジ名が含まれないようにします。
ブリッジ名は、ブリッジが公開するエンドポイントで使用されません。
1.3. TLS 検証用の 3scale APIcast リンクのコピーリンクがクリップボードにコピーされました!
TLS の検証用に APIcast を設定できます。これにはテンプレートを使用した APIcast の自己管理によるデプロイメントが必要になります。apicast サービスがルートとして公開されます。
TLS ポリシーを Kafka Bridge API に適用することもできます。
1.4. 既存の 3scale デプロイメントを使用する場合 リンクのコピーリンクがクリップボードにコピーされました!
3scale がすでに OpenShift にデプロイされており、Kafka Bridge と併用する場合は、Kafka Bridge を使用するための 3scale のデプロイメント に記載されているとおりに設定されていることを確認してください。
第2章 Kafka Bridge を使用するための 3scale のデプロイメント リンクのコピーリンクがクリップボードにコピーされました!
3scale を Kafka Bridge と統合するには、Kafka Bridge API を検出するようにデプロイメントを設定する必要があります。
このシナリオでは、Streams for Apache Kafka、Kafka、Kafka Bridge、および 3scale API Management を同じ OpenShift クラスターで実行します。3scale APIcast は、NGINX ベースの API ゲートウェイとして機能します。これにより、HTTP クライアントが Kafka Bridge API サービスに接続できるようになります。
この手順では、3scale Operator を通じて管理される次の 3scale カスタムリソースを使用します。
-
Kafka Bridge OpenAPI 仕様をインポートするための
OpenAPIカスタムリソース -
Kafka Bridge ルーティングポリシーをインポートし、アプリケーションプランとアプリケーションを設定するための
Productカスタムリソース -
プロダクトの APIcast 設定をプロモートするための
ProxyConfigPromoteカスタムリソース
これらのリソースの作成と管理の詳細は、Red Hat 3Scale ドキュメント の Operator の手順を参照してください。
3scale が Kafka Bridge と同じクラスターにすでにデプロイされている場合は、デプロイ手順をスキップして、既存のデプロイメントを使用してください。
前提条件
- 3scale コンポーネントに関する知識。
- Streams for Apache Kafka と Kafka がデプロイされている。デプロイ手順を参照してください。
- Kafka Bridge がデプロイされている。デプロイ手順を参照してください。
3scale をデプロイする場合:
- Red Hat 3scale API Management でサポートされる設定 を確認する。
-
インストールに必要な
cluster-adminアクセス権 (system:adminなど) がある。 次の JSON ファイルにアクセスする。
-
Kafka Bridge OpenAPI 仕様 (
openapi.jsonv3)。 -
Kafka Bridge のヘッダー変更およびルーティングポリシー (
policies_config.json)。
JSON ファイルは GitHub で入手できます。
-
Kafka Bridge OpenAPI 仕様 (
手順
Red Hat 3Scale のドキュメント の説明に従って 3scale API Management をセットアップします。
3scale Operator を使用して、3scale API Manager と APIcast をインストールします。
API Manager をデプロイする前に、
APIManagerカスタムリソースのwildcardDomainプロパティーを OpenShift クラスターのドメインと一致するように更新します。ドメインは、3scale 管理ポータルにアクセスするための URL (
http[s]://<authentication_token>@3scale-admin.<cluster_domain>) で使用されます。-
APIManagerカスタムリソースのステータスを確認して、3scale のデプロイメントを確認します。
Kafka Bridge を検出する権限を 3scale API Manager に付与します。
oc adm policy add-cluster-role-to-user view system:serviceaccount:<my_bridge_namespace>:amp
oc adm policy add-cluster-role-to-user view system:serviceaccount:<my_bridge_namespace>:ampCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、指定した namespace (
<my_bridge_namespace>) の Kafka Bridge リソースへの読み取りアクセス (view) を、API Manager (amp) に付与します。Cluster Operator デプロイメントに 3scale 検出に必要なラベルとアノテーションがあることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Kafka Bridge で OpenAPI v2 のサポートが非推奨になると、
/openapiエンドポイントは OpenAPI v3 を表すようになります。その時点で、/openapi/v3エンドポイントは削除される予定です。必要に応じて、OpenShift コンソールからこれらのプロパティーを更新するか、Cluster Operator と Kafka Bridge を再デプロイします。
- Red Hat 3Scale のドキュメント の説明に従って、3scale 管理ポータルで OpenShift から Kafka Bridge API サービスをインポートします。
OpenAPI 仕様 (JSON ファイル) に、Kafka Bridge サービスのベース URL を参照する
serversプロパティーを追加します。Kafka Bridge サービス URL への参照の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow serversの URL に以下が含まれていることを確認してください。-
Kafka Bridge 名 (
my-bridge) -
プロジェクト名 (
my-project) -
Kafka Bridge のポート (
8080)
-
Kafka Bridge 名 (
OpenAPIカスタムリソースを作成して、Kafka Bridge OpenAPI 仕様をインポートします。OpenAPIカスタムリソースを作成すると、3scale Operator によって、サービス ID を含む 3scaleProductカスタムリソースが自動的に作成されます。-
Kafka Bridge ルーティングポリシー (
policies_config.json) をインポートして、Productカスタムリソースを更新します。 - 3scale 管理ポータルから、Kafka Bridge サービスのエンドポイントとポリシーがロードされていることを確認します。
Productカスタムリソースを更新して、アプリケーションプランとアプリケーションを設定します。認証用のユーザーキーを取得するにはアプリケーションが必要です。
-
(実稼働環境の場合)
ProxyConfigPromoteカスタムリソースを作成して、プロダクトの APIcast 設定をプロモートします。 コンシューマー作成呼び出しとアプリケーション用に生成されたユーザーキーを使用して、APIcast ゲートウェイ経由で Kafka Bridge への API アクセスを確認します。
以下に例を示します。
https//my-project-my-bridge-bridge-service-3scale-apicast-staging.example.com:443/consumers/my-group?user_key=3dfc188650101010ecd7fdc56098ce95
https//my-project-my-bridge-bridge-service-3scale-apicast-staging.example.com:443/consumers/my-group?user_key=3dfc188650101010ecd7fdc56098ce95Copy to Clipboard Copied! Toggle word wrap Toggle overflow Kafka Bridge からレスポンスペイロードが返されれば、コンシューマーは正常に作成されています。
{ "instance_id": "consumer1", "base uri": "https//my-project-my-bridge-bridge-service-3scale-apicast-staging.example.com:443/consumers/my-group/instances/consumer1" }{ "instance_id": "consumer1", "base uri": "https//my-project-my-bridge-bridge-service-3scale-apicast-staging.example.com:443/consumers/my-group/instances/consumer1" }Copy to Clipboard Copied! Toggle word wrap Toggle overflow ベース URI は、クライアントが後続のリクエストに使用するアドレスです。
付録A サブスクリプションの使用 リンクのコピーリンクがクリップボードにコピーされました!
Streams for Apache Kafka は、ソフトウェアサブスクリプションを通じて提供されます。サブスクリプションを管理するには、Red Hat カスタマーポータルでアカウントにアクセスします。
アカウントへのアクセス
- access.redhat.com に移動します。
- アカウントがない場合は作成します。
- アカウントにログインします。
サブスクリプションのアクティベート
- access.redhat.com に移動します。
- My Subscriptions に移動します。
- Activate a subscription に移動し、16 桁のアクティベーション番号を入力します。
Zip および Tar ファイルのダウンロード
zip または tar ファイルにアクセスするには、カスタマーポータルを使用して、ダウンロードする関連ファイルを検索します。RPM パッケージを使用している場合、この手順は必要ありません。
- ブラウザーを開き、access.redhat.com/downloads で Red Hat カスタマーポータルの Product Downloads ページにログインします。
- INTEGRATION AND AUTOMATION カテゴリーで、Streams for Apache Kafka エントリーを見つけます。
- 必要な Streams for Apache Kafka 製品を選択します。Software Downloads ページが開きます。
- コンポーネントの Download リンクをクリックします。
DNF を使用したパッケージのインストール
パッケージとすべてのパッケージ依存関係をインストールするには、以下を使用します。
dnf install <package_name>
dnf install <package_name>
ローカルディレクトリーからダウンロード済みのパッケージをインストールするには、以下を使用します。
dnf install <path_to_download_package>
dnf install <path_to_download_package>
改訂日時: 2024-11-13