第4章 3scale の検出についての API サービスの準備
Red Hat 3scale API Management は、パブリックインターネット上の API サービスへのアクセスの調整を可能にする Red Hat のオファリングです。3scale の機能には、サービスレベルアグリーメント (SLA) の実施、API バージョンの管理、セキュリティーおよび認証サービスの提供などが含まれます。Fuse は 3scale の サービス検出機能をサポートします。これにより、3scale 管理ポータル UI から Fuse サービスを簡単に検出できます。サービス検出を使用して、同じ OpenShift クラスターで実行されている Fuse アプリケーションをスキャンし、関連付けられた API 定義を 3scale に自動的にインポートできます。
前提条件
- API サービスを提供する Fuse アプリケーションが OpenShift でデプロイされ、実行されています。
Fuse アプリケーションには、3scale によって検出されるように必須のアノテーションが付けられています。
注記API Designer によって生成される Fuse プロジェクトは、必要なアノテーションを自動的に提供するように事前に設定されています。
API Designer によって生成されていない Fuse プロジェクトの場合、「API Designer によって生成されない Fuse プロジェクトのアノテーションの追加」で説明されているようにプロジェクトを設定する必要があります。
- 3scale API Management システムは、検出される API サービスと 同じ OpenShift クラスターにデプロイされます。
3scale で API サービスを検出する手順についての詳細は、『Red Hat 3scale API Management Portal Guide』の「service discovery」のセクションを参照してください。
4.1. API Designer によって生成されない Fuse プロジェクトのアノテーションの追加 リンクのコピーリンクがクリップボードにコピーされました!
3scale が API サービスを検出できるようにするには、API サービスを提供する Fuse アプリケーションに、検出を可能にする Kubernetes サービスアノテーションが含まれている必要があります。これらのアノテーションは、Fabric8 Maven Plugin の一部である Fabric8 Service Discovery Enricher によって提供されます。
Apache Camel Rest DSL プロジェクトの場合、Fabric8 Maven Plugin はデフォルトで Fabric8 Service Discovery Enricher を実行します。
API Designer によって生成される Fuse プロジェクトは、必要なアノテーションを自動的に提供するよう事前に設定されます。
手順
API Designer によって生成されていない Fuse Rest DSL プロジェクトの場合、プロジェクトを以下のように設定します。
以下の例のように、Fuse プロジェクトの
pom.xmlファイルを編集し、fabric8-maven-plugin依存関係を組み込みます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Fabric8 Maven Plugin は、特定のプロジェクトレベルの条件が満たされる場合は Fabric8 Service Discovery Enricher を実行します (例: プロジェクトは Camel Rest DSL プロジェクトである必要があります)。(「API サービスアノテーション値のカスタマイズ」 で説明されているように) Enricher の動作をカスタマイズする必要がない場合は、Fabric8 Service Discovery Enricher を
pom.xmlファイルで依存関係として指定する必要はありません。Fuse Rest DSL プロジェクトの
camel-context.xmlファイルで、以下の属性をrestConfiguration要素に指定します。-
scheme: サービスがホストされる URL のスキーム部分です。「http」または「https」を指定できます。 -
contextPath: API サービスがホストされる URL のパスの部分です。 apiContextPath: API サービス記述ドキュメントがホストされる場所へのパスです。ドキュメントがセルフホストされている場合は相対パスを指定でき、ドキュメントが外部でホストされる場合は完全な URL を指定できます。サンプル
camel-context.xmlファイルからの以下の抜粋には、アノテーションの属性値がrestConfiguration要素に表示されています。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
Enricher は、これらの restConfiguration 要素の属性値で指定される情報を使用し、discovery.3scale.net/scheme、discovery.3scale.net/path、および discovery.3scale.net/description-path アノテーションの値を作成します。これにより、Red Hat 3scale API Management『管理ポータルガイド』の「サービスディスカバリー」の説明にあるように、プロジェクトのデプロイされた OpenShift サービスを 3scale で検出可能にすることができます。
Enricher は以下のラベルとアノテーションを追加して、サービスが 3scale で検出できるようにします。
-
discovery.3scale.netラベル: デフォルトで、Enricher はこの値を「true」に設定します。3scale はセレクター定義を実行して検出を必要とするすべてのサービスを検索する際にこのラベルを使用します。 以下のアノテーションを使用できます。
-
discovery.3scale.net/discovery-version: (任意) 3scale 検出プロセスのバージョンです。Enricher はデフォルトでこの値を「v1」に設定します。 -
discovery.3scale.net/scheme: サービスがホストされる URL のスキーム部分です。Enricher は、restConfiguration要素のscheme属性で上書きしない限り、デフォルトの「http」を使用します。他の使用できる値は「https」です。 -
discovery.3scale.net/path: サービスがホストされる URL のパスの部分です。このアノテーションは、パスがルート「/」にある場合に省略されます。Enricher は、この値をrestConfiguration要素のpath属性から取得します。 -
discovery.3scale.net/port: サービスのポート。Enricher はこの値を Kubernetes サービス定義から取得します。これには、公開するサービスのポート番号が含まれます。Kubernetes サービス定義が複数のサービスを公開する場合、Enricher は一覧表示される最初のポートを使用します。 -
discovery.3scale.net/description-path: (任意) OpenAPI サービス記述ドキュメントへのパスです。Enricher は、この値をrestConfiguration要素のcontextPath属性から取得します。
-
「API サービスアノテーション値のカスタマイズ」で説明されているように、Fabric8 Service Discovery Enricher の動作をカスタマイズできます。
4.2. API サービスアノテーション値のカスタマイズ リンクのコピーリンクがクリップボードにコピーされました!
Maven Fabric8 プラグインは、デフォルトで Fabric8 Service Discovery Enricher を実行します。Enricher は、Red Hat 3scale API Management の『Admin Portal Guide』ガイドの「Using Service Discovery」で説明されているように、アノテーションを Fuse Rest DSL プロジェクトの API サービスに追加して API サービスを 3scale で検出できるようにします。
Enricher は一部のアノテーションのデフォルト値を使用し、プロジェクトの camel-context.xml ファイルから他のアノテーションの値を取得します。
デフォルト値や camel-context.xml ファイルで定義される値は、Fuse プロジェクトの pom.xml ファイルや service.yml ファイルに値を定義して上書きできます。(両方のファイルで値を定義する場合、Enricher は service.yml ファイルから値を使用します。) Fabric8 Service Discovery Enricher について指定できる要素の説明については、「Fabric8 Service Discovery Enricher 要素」を参照してください。
手順
Fuse プロジェクトの pom.xml ファイルにアノテーションの値を指定するには、以下を実行します。
-
任意のエディターで Fuse プロジェクトの
pom.xmlファイルを開きます。 以下の例のように、
fabric8-maven-pluginの依存関係を見つけます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の例のように、Fabric8 Service Discovery Enricher を Fabric8-Maven プラグインに依存関係として追加します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を保存します。
または、src/main/fabric8/service.yml フラグメントを使用して、以下の例のようにアノテーション値を上書きできます。
4.3. Fabric8 Service Discovery Enricher 要素 リンクのコピーリンクがクリップボードにコピーされました!
以下の表は、デフォルト値や camel-context.xml ファイルで定義された値を上書きする必要がある場合に Fabric8 Service Discovery Enricher に指定できる要素について説明しています。
これらの値は Fuse Rest DSL プロジェクトの pom.xml ファイルや src/main/fabric8/service.yml ファイルで定義できます。(両方のファイルで値を定義する場合、Enricher は service.yml ファイルから値を使用します。) サンプルについては、「API サービスアノテーション値のカスタマイズ」 を参照してください。
| 要素 | 説明 | デフォルト |
|---|---|---|
|
|
|
Camel Rest DSL プロジェクトを認識するために使用される |
|
| サービスがホストされる URL のスキーム部分です。「http」または「https」を指定できます。 | http |
|
| API サービスがホストされる URL のパスの部分です。 | |
|
| API サービスがホストされる URL のポートの部分です。 | 80 |
|
| API サービス記述ドキュメントがホストされる場所へのパスです。ドキュメントがセルフホストされている場合は相対パスを指定でき、ドキュメントが外部でホストされる場合は完全な URL を指定できます。 | |
|
| 3scale 検出の実装のバージョンです。 | v1 |
|
|
true に設定すると、3scale はこのサービスの検出を試行します。 false に設定すると、3scale はこのサービスの検出を試行しません。 この要素をスイッチとして使用し、「false」に設定することで 3scale 検出の統合を一時的にオフにできます。 | 値を指定しない場合、Enricher はサービスを検出可能にできるかどうかについて自動検出を試行します。Enricher がサービスが検出不可能であると判別すると、3scale はこのサービスの検出を試行しません。 |