3scale API Management を Streams for Apache Kafka Bridge とともに使用


Red Hat Streams for Apache Kafka 2.8

3scale で利用可能な機能を使用する

概要

OpenShift Container Platform 上の Streams for Apache Kafka Bridge のデプロイメントを使用して、Red Hat 3scale API Management をデプロイおよび統合します。

はじめに

Red Hat ドキュメントへのフィードバック (英語のみ)

Red Hat ドキュメントに関するご意見やご感想をお寄せください。

改善を提案するには、Jira 課題を作成し、変更案を説明してください。ご要望に迅速に対応できるよう、できるだけ詳細にご記入ください。

前提条件

  • Red Hat カスタマーポータルのアカウントがある。このアカウントを使用すると、Red Hat Jira Software インスタンスにログインできます。
    アカウントをお持ちでない場合は、アカウントを作成するように求められます。

手順

  1. 以下の Create issue をクリックします。
  2. Summary テキストボックスに、問題の簡単な説明を入力します。
  3. Description テキストボックスに、次の情報を入力します。

    • 問題が見つかったページの URL。
    • 問題の詳細情報
      他のフィールドの情報はデフォルト値のままにすることができます。
  4. レポーター名を追加します。
  5. 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"
}
Copy to Clipboard Toggle word wrap

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"
}
Copy to Clipboard Toggle word wrap

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/consumer1

URL 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 をデプロイする場合:

  • Red Hat 3scale API Management でサポートされる設定 を確認する。
  • インストールに必要な cluster-admin アクセス権 (system:admin など) がある。
  • 次の JSON ファイルにアクセスする。

    • Kafka Bridge OpenAPI 仕様 (openapi.json v3)。
    • Kafka Bridge のヘッダー変更およびルーティングポリシー (policies_config.json)。
      JSON ファイルは GitHub で入手できます。

手順

  1. Red Hat 3Scale のドキュメント の説明に従って 3scale API Management をセットアップします。

    1. 3scale Operator を使用して、3scale API Manager と APIcast をインストールします。

      API Manager をデプロイする前に、APIManager カスタムリソースの wildcardDomain プロパティーを OpenShift クラスターのドメインと一致するように更新します。

      ドメインは、3scale 管理ポータルにアクセスするための URL (http[s]://<authentication_token>@3scale-admin.<cluster_domain>) で使用されます。

    2. APIManager カスタムリソースのステータスを確認して、3scale のデプロイメントを確認します。
  2. Kafka Bridge を検出する権限を 3scale API Manager に付与します。

    oc adm policy add-cluster-role-to-user view system:serviceaccount:<my_bridge_namespace>:amp
    Copy to Clipboard Toggle word wrap

    このコマンドは、指定した namespace (<my_bridge_namespace>) の Kafka Bridge リソースへの読み取りアクセス (view) を、API Manager (amp) に付与します。

  3. Cluster Operator デプロイメントに 3scale 検出に必要なラベルとアノテーションがあることを確認します。

    #...
    env:
    - name: STRIMZI_CUSTOM_KAFKA_BRIDGE_SERVICE_LABELS
        value: |
        discovery.3scale.net=true
    - name: STRIMZI_CUSTOM_KAFKA_BRIDGE_SERVICE_ANNOTATIONS
        value: |
        discovery.3scale.net/scheme=http
        discovery.3scale.net/port=8080
        discovery.3scale.net/path=/
        discovery.3scale.net/description-path=/openapi/v3
    #...
    Copy to Clipboard Toggle word wrap

    Kafka Bridge で OpenAPI v2 のサポートが非推奨になると、/openapi エンドポイントは OpenAPI v3 を表すようになります。その時点で、/openapi/v3 エンドポイントは削除される予定です。

    必要に応じて、OpenShift コンソールからこれらのプロパティーを更新するか、Cluster OperatorKafka Bridge を再デプロイします。

  4. Red Hat 3Scale のドキュメント の説明に従って、3scale 管理ポータルで OpenShift から Kafka Bridge API サービスをインポートします。
  5. OpenAPI 仕様 (JSON ファイル) に、Kafka Bridge サービスのベース URL を参照する servers プロパティーを追加します。

    Kafka Bridge サービス URL への参照の例

    {
        "openapi": "3.0.0",
        "info": {
          "title": "Kafka Bridge API Reference",
          "description": "The Kafka Bridge provides a REST API
            for integrating HTTP based client applications with
            a Kafka cluster. You can use the API to create and
            manage consumers and send and receive records over
            HTTP rather than the native Kafka protocol. ",
            "version": "0.1.0"
        },
        "servers": [
          {
            "url": "https://my-bridge-bridge-service.my-project.svc.cluster.local:8080"
          }
        ],
        "paths": {
    Copy to Clipboard Toggle word wrap

    servers の URL に以下が含まれていることを確認してください。

    • Kafka Bridge 名 (my-bridge)
    • プロジェクト名 (my-project)
    • Kafka Bridge のポート (8080)
  6. OpenAPI カスタムリソースを作成して、Kafka Bridge OpenAPI 仕様をインポートします。

    OpenAPI カスタムリソースを作成すると、3scale Operator によって、サービス ID を含む 3scale Product カスタムリソースが自動的に作成されます。

  7. Kafka Bridge ルーティングポリシー (policies_config.json) をインポートして、Product カスタムリソースを更新します。
  8. 3scale 管理ポータルから、Kafka Bridge サービスのエンドポイントとポリシーがロードされていることを確認します。
  9. Product カスタムリソースを更新して、アプリケーションプランとアプリケーションを設定します。

    認証用のユーザーキーを取得するにはアプリケーションが必要です。

  10. (実稼働環境の場合) ProxyConfigPromote カスタムリソースを作成して、プロダクトの APIcast 設定をプロモートします。
  11. コンシューマー作成呼び出しとアプリケーション用に生成されたユーザーキーを使用して、APIcast ゲートウェイ経由で Kafka Bridge への API アクセスを確認します。

    以下に例を示します。

    https//my-project-my-bridge-bridge-service-3scale-apicast-staging.example.com:443/consumers/my-group?user_key=3dfc188650101010ecd7fdc56098ce95
    Copy to Clipboard Toggle word wrap

    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"
    }
    Copy to Clipboard Toggle word wrap

    ベース URI は、クライアントが後続のリクエストに使用するアドレスです。

付録A サブスクリプションの使用

Streams for Apache Kafka は、ソフトウェアサブスクリプションを通じて提供されます。サブスクリプションを管理するには、Red Hat カスタマーポータルでアカウントにアクセスします。

アカウントへのアクセス

  1. access.redhat.com に移動します。
  2. アカウントがない場合は作成します。
  3. アカウントにログインします。

サブスクリプションのアクティベート

  1. access.redhat.com に移動します。
  2. My Subscriptions に移動します。
  3. Activate a subscription に移動し、16 桁のアクティベーション番号を入力します。

Zip および Tar ファイルのダウンロード

zip または tar ファイルにアクセスするには、カスタマーポータルを使用して、ダウンロードする関連ファイルを検索します。RPM パッケージを使用している場合、この手順は必要ありません。

  1. ブラウザーを開き、access.redhat.com/downloads で Red Hat カスタマーポータルの Product Downloads ページにログインします。
  2. INTEGRATION AND AUTOMATION カテゴリーで、Streams for Apache Kafka エントリーを見つけます。
  3. 必要な Streams for Apache Kafka 製品を選択します。Software Downloads ページが開きます。
  4. コンポーネントの Download リンクをクリックします。

DNF を使用したパッケージのインストール

パッケージとすべてのパッケージ依存関係をインストールするには、以下を使用します。

dnf install <package_name>
Copy to Clipboard Toggle word wrap

ローカルディレクトリーからダウンロード済みのパッケージをインストールするには、以下を使用します。

dnf install <path_to_download_package>
Copy to Clipboard Toggle word wrap

改訂日時: 2024-11-13

法律上の通知

Copyright © 2024 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

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

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

会社概要

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

Theme

© 2025 Red Hat