5.2. API サービスアノテーション値のカスタマイズ

Maven Fabric8 プラグインは、デフォルトで Fabric8 Service Discovery Enricher を実行します。Enricher は、Red Hat 3scale API Management の 管理ポータルガイドサービスディスカバリーの使用 で説明されているように、アノテーションを 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. 以下の例のように、openshift-maven-plugin の依存関係を見つけます。

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

    <plugin>
      <groupId>org.jboss.redhat-fuse</groupId>
      <artifactId>openshift-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>
  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