第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.json
v3)。 -
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 に付与します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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>:amp
このコマンドは、指定した namespace (
<my_bridge_namespace>
) の Kafka Bridge リソースへの読み取りアクセス (view
) を、API Manager (amp
) に付与します。Cluster Operator デプロイメントに 3scale 検出に必要なラベルとアノテーションがあることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow #... 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 #...
#... 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 #...
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 { "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": {
{ "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": {
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 アクセスを確認します。
以下に例を示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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=3dfc188650101010ecd7fdc56098ce95
Kafka Bridge からレスポンスペイロードが返されれば、コンシューマーは正常に作成されています。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow { "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" }
ベース URI は、クライアントが後続のリクエストに使用するアドレスです。