第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 プロジェクトの場合、プロジェクトを以下のように設定します。

  1. 以下の例のように、Fuse プロジェクトの pom.xml ファイルを編集し、fabric8-maven-plugin 依存関係を組み込みます。

    <plugin>
            <groupId>org.jboss.redhat-fuse</groupId>
            <artifactId>fabric8-maven-plugin</artifactId>
            <version>${fuse.version}</version>
            <executions>
              <execution>
                <goals>
                  <goal>resource</goal>
                  <goal>build</goal>
                </goals>
              </execution>
            </executions>
      </plugin>
    Copy to Clipboard Toggle word wrap

    Fabric8 Maven Plugin は、特定のプロジェクトレベルの条件が満たされる場合は Fabric8 Service Discovery Enricher を実行します (例: プロジェクトは Camel Rest DSL プロジェクトである必要があります)。(「API サービスアノテーション値のカスタマイズ」 で説明されているように) Enricher の動作をカスタマイズする必要がない場合は、Fabric8 Service Discovery Enricher を pom.xml ファイルで依存関係として指定する必要はありません。

  2. Fuse Rest DSL プロジェクトの camel-context.xml ファイルで、以下の属性を restConfiguration 要素に指定します。

    • scheme: サービスがホストされる URL のスキーム部分です。「http」または「https」を指定できます。
    • contextPath: API サービスがホストされる URL のパスの部分です。
    • apiContextPath: API サービス記述ドキュメントがホストされる場所へのパスです。ドキュメントがセルフホストされている場合は相対パスを指定でき、ドキュメントが外部でホストされる場合は完全な URL を指定できます。

      サンプル camel-context.xml ファイルからの以下の抜粋には、アノテーションの属性値が restConfiguration 要素に表示されています。

      <?xml version="1.0" encoding="UTF-8"?>
      <beans xmlns="http://www.springframework.org/schema/beans"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="
             http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
             http://camel.apache.org/schema/spring       http://camel.apache.org/schema/spring/camel-spring.xsd">
      
          <camelContext xmlns="http://camel.apache.org/schema/spring">
              <restConfiguration component="servlet" scheme="https"
                    contextPath="myapi" apiContextPath="myapi/openapi.json"/>
      ...
      Copy to Clipboard Toggle word wrap

Enricher は、これらの restConfiguration 要素の属性値で指定される情報を使用し、discovery.3scale.net/schemediscovery.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 ファイルにアノテーションの値を指定するには、以下を実行します。

  1. 任意のエディターで Fuse プロジェクトの pom.xml ファイルを開きます。
  2. 以下の例のように、fabric8-maven-plugin の依存関係を見つけます。

    <plugin>
            <groupId>org.jboss.redhat-fuse</groupId>
            <artifactId>fabric8-maven-plugin</artifactId>
            <version>${fuse.version}</version>
            <executions>
              <execution>
                <goals>
                  <goal>resource</goal>
                  <goal>build</goal>
                </goals>
              </execution>
            </executions>
      </plugin>
    Copy to Clipboard Toggle word wrap
  3. 以下の例のように、Fabric8 Service Discovery Enricher を Fabric8-Maven プラグインに依存関係として追加します。

    <plugin>
      <groupId>org.jboss.redhat-fuse</groupId>
      <artifactId>fabric8-maven-plugin</artifactId>
      <version>${fuse.version}</version>
      <executions>
        <execution>
          <goals>
            <goal>resource</goal>
            <goal>build</goal>
          </goals>
        </execution>
      </executions>
      <dependencies>
        <dependency>
          <groupId>io.acme</groupId>
          <artifactId>myenricher</artifactId>
          <version>1.0</version>
          <configuration>
            <enricher>
              <config>
                <f8-service-discovery>
                  <scheme>https</scheme>
                  <path>/api</path>
                  <descriptionPath>/api/openapi.json</descriptionPath>
                </f8-service-discovery>
              </config>
            </enricher>
          </configuration>
          </dependency>
      </dependencies>
    </plugin>
    Copy to Clipboard Toggle word wrap
  4. 変更を保存します。

または、src/main/fabric8/service.yml フラグメントを使用して、以下の例のようにアノテーション値を上書きできます。

kind: Service
name:
metadata:
  labels:
    discovery.3scale.net/discoverable : "true"
  annotations:
    discovery.3scale.net/discovery-version : "v1"
    discovery.3scale.net/scheme : "https"
    discovery.3scale.net/path : "/api"
    discovery.3scale.net/port : "443"
    discovery.3scale.net/description-path : "/api/openapi.json"
spec:
  type: LoadBalancer
Copy to Clipboard Toggle word wrap

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 サービスアノテーション値のカスタマイズ」 を参照してください。

Expand
表4.1 Fabric8 Service Discovery Enricher 要素
要素説明デフォルト

springDir

camel-context.xml ファイルが含まれる spring 設定ディレクトリーへのパスです。

Camel Rest DSL プロジェクトを認識するために使用される /src/main/resources/spring パスです。

scheme

サービスがホストされる URL のスキーム部分です。「http」または「https」を指定できます。

http

path

API サービスがホストされる URL のパスの部分です。

 

port

API サービスがホストされる URL のポートの部分です。

80

descriptionPath

API サービス記述ドキュメントがホストされる場所へのパスです。ドキュメントがセルフホストされている場合は相対パスを指定でき、ドキュメントが外部でホストされる場合は完全な URL を指定できます。

 

discoveryVersion

3scale 検出の実装のバージョンです。

v1

discoverable

discovery.3scale.net ラベルを true または false のいずれかに設定する要素です。

true に設定すると、3scale はこのサービスの検出を試行します。

false に設定すると、3scale はこのサービスの検出を試行しません。

この要素をスイッチとして使用し、「false」に設定することで 3scale 検出の統合を一時的にオフにできます。

値を指定しない場合、Enricher はサービスを検出可能にできるかどうかについて自動検出を試行します。Enricher がサービスが検出不可能であると判別すると、3scale はこのサービスの検出を試行しません。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat