C.5. ジェネレーター

Fabric8 Maven プラグインは、特定の種類のアプリケーションに対して自動的にイメージをビルドする機能がある、generator コンポーネントを提供します。Fuse on OpenShift では、以下のジェネレータータイプがサポートされます。

ジェネレーターフレームワークは、アプリケーションプロジェクトの特性に応じて、必要なビルドタイプを自動検出し、適切なジェネレーターコンポーネントを呼び出します。

注記

Fabric8 Maven プラグインのオープンソースコミュニティーバージョンは、追加のジェネレータータイプを提供しますが、これらのタイプは Fuse on OpenShift 製品ではサポートされません。

C.5.1. ゼロ設定

ジェネレーターには設定が必要ありません。ジェネレーターはデフォルトで有効になり、Fabric8 Maven プラグインが呼び出されると自動的にデフォルト設定で実行されます。しかし、必要な場合はジェネレーターの設定を簡単にカスタマイズできます。

C.5.2. ベースイメージを指定するモード

Fuse on OpenShift では、アプリケーションビルドのベースイメージは Java イメージ (Spring Boot アプリケーションの場合) または Karaf イメージ (Karaf アプリケーションの場合) のいずれかになります。Fabric8 Maven プラグインは、ベースイメージの指定に以下のモードをサポートします。

istag

(デフォルト): image stream は、OpenShift イメージストリームからタグ付けされたイメージを選択して動作します。この場合、ベースイメージは以下の形式で指定されます。

<namespace>/<image-stream-name>:<tag>

<namespace> は、イメージストリームが定義される OpenShift プロジェクトの名前に置き換えます (通常は openshift)。<image-stream-name> はイメージストリームの名前に置き換えます。<tag> はストリームの特定のイメージを識別します (またはストリームの最新イメージを追跡します)。

docker

docker モードは、イメージレジストリーから特定の Docker 形式イメージを選択して動作します。ベースイメージは直接リモートレジストリーから取得されるため、イメージストリームは必要ありません。この場合、ベースイメージは以下の形式で指定されます。

[<registry-location-url>/]<image-namespace>/<image-name>:<tag>

イメージ指定子は 任意で リモートイメージレジストリーの URL である <registry-location-url> で始まり、イメージ namespace <image-namespace>、イメージ名 <image-name>、およびタグ <tag> が続きます。

注記

オープンソースコミュニティーバージョンの fabric8-maven-plugin のデフォルト操作は Red Hat の製品化バージョンとは異なります。たとえば、コミュニティーバージョンのデフォルトモードは docker です。

C.5.2.1. istag モードのデフォルト値

デフォルトである istag モードが選択されている場合、Fabric8 Maven プラグインは以下のデフォルトイメージ指定子を使用して Fuse イメージを選択します (形式は <namespace>/<image-stream-name>:<tag> です)。

fuse7/fuse-eap-openshift:1.6
fuse7/fuse-java-openshift:1.6
fuse7/fuse-karaf-openshift:1.6
注記

Fuse イメージストリームでは、個別のイメージに 1.0-11.0-2 などのビルド番号がタグ付けされます。常に最新のイメージを追跡するよう、1.0 タグが設定されます。

C.5.2.2. docker モードのデフォルト値

docker モードが選択され、registry.redhat.io にアクセスするよう OpenShift 環境が設定されていることを仮定する場合、Fabric8 Maven プラグインは以下のデフォルトイメージ指定子を使用して Fuse イメージを選択します (形式は <image-namespace>/<image-name>:<tag> です)。

fuse7/fuse-eap-openshift:1.6
fuse7/fuse-java-openshift:1.6
fuse7/fuse-karaf-openshift:1.6

C.5.2.3. Spring Boot アプリケーションのモード設定

Spring Boot アプリケーションのビルドに使用されるモード設定とベースイメージの場所をカスタマイズするには、以下の形式で configuration 要素をアプリケーションの pom.xml ファイルにある fabric8-maven-plugin 設定に追加します。

<configuration>
  <generator>
    <config>
      <spring-boot>
        <fromMode>{istag|docker}</fromMode>
        <from>{image locations}</from>
      </spring-boot>
    </config>
  </generator>
</configuration>

C.5.2.4. Karaf アプリケーションのモード設定

Karaf アプリケーションのビルドに使用されるモード設定とベースイメージの場所をカスタマイズするには、以下の形式で configuration 要素をアプリケーションの pom.xml ファイルにある fabric8-maven-plugin 設定に追加します。

<configuration>
  <generator>
    <config>
      <karaf>
        <fromMode>{istag|docker}</fromMode>
        <from>{image locations}</from>
      </karaf>
    </config>
  </generator>
</configuration>

C.5.2.5. コマンドラインを使用したジェネレーターモードの指定

pom.xml ファイルで直接モードの設定をカスタマイズする代わりに、以下のプロパティー設定をコマンドライン呼び出しに追加し、モードの設定を直接 mvn コマンドに渡すことができます。

//build from Docker-formatted image directly, registry location, image name or tag are subject to change if desirable
-Dfabric8.generator.fromMode=docker
-Dfabric8.generator.from=<custom-registry-location-url>/<image-namespace>/<image-name>:<tag>

//to use ImageStream from different namespace
-Dfabric8.generator.fromMode=istag //istag is default
-Dfabric8.generator.from=<namespace>/<image-stream-name>:<tag>

C.5.3. Spring Boot

Spring Boot ジェネレーターは、pom.xml ファイルで spring-boot-maven-plugin を見つけるとアクティベートされます。生成されたコンテナーポートは application.properties ファイルの server.port プロパティーのから読み取られ、見つからない場合はデフォルトで 8080 になります。

このジェネレーターは一般的なジェネレーターオプションの他に、以下のオプションで設定することができます。

表C.4 Spring Boot 設定オプション

要素説明デフォルト

assemblyRef

アセンブリーへの参照が指定されている場合は、含めるアーティファクトの検出を行わずに使用されます。

 

targetDir

検出されたアーティファクトが配置される生成されたイメージ内のディレクトリー。ベースイメージも変更された場合のみ変更します。

/deployments

jolokiaPort

ベースイメージによって公開される Jolokia エージェントのポート。Jolokia ポートを公開したくない場合はこれを 0 に設定します。

8778

mainClass

呼び出すメインクラス。指定のない場合は次のようにジェネレーターがメインクラスを検索します。最初に、fat-jar を検出するためにチェックが実行されます。次に、main メソッドを持つ単一のクラスを探すために target/classes ディレクトリーがスキャンされます。何も見つからなかった場合や複数のクラスが見つかった場合は、ジェネレーターは何もしません。

 

webPort

サービスとして公開するポート。Web アプリケーションのポートであるはずです。ポートを公開しない場合はこれを 0 に設定します。

8080

color

設定されている場合、Spring Boot のコンソール出力で色を強制的に使用します。

 

ジェネレーターは、application.properties から読み取られた管理またはサーバーポートのいずれかを示す Kubernetes の liveness および readiness probe を追加します。server.ssl.key-store プロパティーが application.properties に設定されている場合、probe は https を使用するよう自動的に設定されます。

C.5.4. Karaf

Karaf ジェネレーターは、pom.xml ファイルで karaf-maven-plugin プラグインを見つけるとアクティベートされます。このジェネレーターは、一般的なジェネレーターオプションに加え、以下のオプションで設定が可能です。

表C.5 Karaf 設定オプション

要素説明デフォルト

baseDir

検出されたアーティファクトが配置される生成されたイメージ内のディレクトリー。ベースイメージも変更された場合のみ変更します。

/deployments

jolokiaPort

ベースイメージによって公開される Jolokia エージェントのポート。Jolokia ポートを公開したくない場合はこれを 0 に設定します。

8778

mainClass

呼び出すメインクラス。指定のない場合は次のようにジェネレーターがメインクラスを検索します。最初に、fat-jar を検出するためにチェックが実行されます。次に、main メソッドを持つ単一のクラスを探すために target/classes ディレクトリーがスキャンされます。何も見つからなかった場合や複数のクラスが見つかった場合は、ジェネレーターは何もしません。

 

user

ファイルを追加するユーザーやグループ。ベースイメージにユーザーがすでに存在している必要があります。通常の形式は <user>[:<group>[:<run-user>]]` です。ユーザーおよびグループは数値のユーザー id およびグループ id、または名前として指定することができます。グループ id は任意です。

jboss:jboss:jboss

webPort

サービスとして公開するポート。Web アプリケーションのポートであるはずです。ポートを公開しない場合はこれを 0 に設定します。

8080