5.3. JBoss EAP でのユーザー開発レイヤーのプロビジョニング
Red Hat から利用可能なレイヤーのプロビジョニングを行うに加え、開発するカスタムレイヤーをプロビジョニングできます。
手順
Galleon Maven プラグインを使用してカスタムレイヤーを構築します。
詳細は、Maven プロジェクトの準備 を参照してください。
- アクセス可能な Maven リポジトリーにカスタムレイヤーをデプロイします。
カスタム Galleon 機能パック環境変数を使用して、S2I イメージビルドプロセス中に Galleon 機能パックとレイヤーをカスタマイズできます。
Galleon 機能パックとレイヤーのカスタマイズの詳細は、S2I ビルド中におけるカスタム Galleon 機能パックの使用 を参照してください。
オプション: ユーザー定義のレイヤーとサポートされる JBoss EAP レイヤーを参照するカスタムプロビジョニングファイルを作成し、これをアプリケーションディレクトリーに保存します。
カスタムプロビジョニングファイルの作成に関する詳細は、JBoss EAP のカスタムプロビジョニングファイル を参照してください。
S2I プロセスを実行して、OpenShift で JBoss EAP サーバーをプロビジョニングします。
詳細は、S2I ビルド中におけるカスタム Galleon 機能パックをの使用 を参照してください。
5.3.1. JBoss EAP のカスタム Galleon レイヤーのビルドと使用 リンクのコピーリンクがクリップボードにコピーされました!
カスタム Galleon レイヤーは、JBoss EAP 7.4 Beta で実行するように設計された Galleon 機能パック内にパッケージ化されています。
Openshift では、JBoss EAP 7.4 サーバー用の MariaDB ドライバーやデータソースなどをプロビジョニングするためのレイヤーを含む Galleon 機能パックをビルドして使用できます。レイヤーには、サーバーにインストールされているコンテンツが含まれています。レイヤーは、サーバーの XML 設定ファイルを更新し、コンテンツをサーバーのインストールに追加できます。
このセクションでは、JBoss EAP 7.4 サーバーに MariaDB ドライバーとデータソースをプロビジョニングするためのレイヤーを含む Galleon フィーチャーパックを OpenShift で構築して使用する方法について説明します。
5.3.1.1. Maven プロジェクトの準備 リンクのコピーリンクがクリップボードにコピーされました!
Galleon 機能パックは、Maven を使用して作成されます。この手順には、新しい Maven プロジェクトを作成する手順が含まれています。
手順
新しい Maven プロジェクトを作成するには、次のコマンドを実行します。
mvn archetype:generate -DarchetypeGroupId=org.codehaus.mojo.archetypes -DarchetypeArtifactId=pom-root -DgroupId=org.example.mariadb -DartifactId=mariadb-galleon-pack -DinteractiveMode=falseディレクトリー
mariadb-galleon-packで、pom.xmlファイルを更新して Red Hat Maven リポジトリーを含めます。<repositories> <repository> <id>redhat-ga</id> <name>Redhat GA</name> <url>https://maven.repository.redhat.com/ga/</url> </repository> </repositories>pom.xmlファイルを更新して、EAP Galleon 機能パックと MariaDB ドライバーへの依存関係を追加します。<dependencies> <dependency> <groupId>org.jboss.eap</groupId> <artifactId>wildfly-ee-galleon-pack</artifactId> <version>7.4.4.GA-redhat-00011</version> <type>zip</type> </dependency> <dependency> <groupId>org.mariadb.jdbc</groupId> <artifactId>mariadb-java-client</artifactId> <version>3.0.5</version> </dependency> </dependencies>pom.xmlファイルを更新して、Galeon 機能パックのビルドに使用される Maven プラグインを含めます。<build> <plugins> <plugin> <groupId>org.wildfly.galleon-plugins</groupId> <artifactId>wildfly-galleon-maven-plugin</artifactId> <version>5.2.11.Final</version> <executions> <execution> <id>mariadb-galleon-pack-build</id> <goals> <goal>build-user-feature-pack</goal> </goals> <phase>compile</phase> </execution> </executions> </plugin> </plugins> </build>
5.3.1.2. 機能パックコンテンツの追加 リンクのコピーリンクがクリップボードにコピーされました!
この手順は、カスタム Galleon 機能パック (MariaDB ドライバーとデータソースレイヤーを含む機能パックなど) にレイヤーを追加するのに役立ちます。
前提条件
- Maven プロジェクトを作成しました。詳細は、Maven プロジェクトの準備 を参照してください。
手順
-
カスタム機能パック Maven プロジェクト内に
src/main/resourcesディレクトリーを作成します。Maven プロジェクトの準備 を参照してください。このディレクトリーは、機能パックのコンテンツを含むルートディレクトリーです。 -
ディレクトリー
src/main/resources/modules/org/mariadb/jdbc/main を作成します。 mainディレクトリーに、次の内容のmodule.xmlという名前のファイルを作成します。<?xml version="1.0" encoding="UTF-8"?> <module name="org.mariadb.jdbc" xmlns="urn:jboss:module:1.8"> <resources> <artifact name="${org.mariadb.jdbc:mariadb-java-client}"/>1 </resources> <dependencies>2 <module name="javax.api"/> <module name="javax.transaction.api"/> </dependencies> </module>-
ディレクトリー
src/main/resources/layers/standalone/を作成します。これは、ガレオン機能パックが定義しているすべてのレイヤーのルートディレクトリーです。 -
ディレクトリー
src/main/resources/layers/standalone/mariadb-driver を作成します。 mariadb-driverディレクトリーで、次の内容でlayer-spec.xmlファイルを作成します。<?xml version="1.0" ?> <layer-spec xmlns="urn:jboss:galleon:layer-spec:1.0" name="mariadb-driver"> <feature spec="subsystem.datasources">1 <feature spec="subsystem.datasources.jdbc-driver"> <param name="driver-name" value="mariadb"/> <param name="jdbc-driver" value="mariadb"/> <param name="driver-xa-datasource-class-name" value="org.mariadb.jdbc.MariaDbDataSource"/> <param name="driver-module-name" value="org.mariadb.jdbc"/> </feature> </feature> <packages>2 <package name="org.mariadb.jdbc"/> </packages> </layer-spec>mariadb-driverレイヤーは、JBoss Modulesモジュールによって実装された JDBC ドライバーの設定で datasources サブシステムを更新します。-
ディレクトリー
src/main/resources/layers/standalone/mariadb-datasourceを作成します。 mariadb-datasourceディレクトリーで、次の内容でlayer-spec.xmlファイルを作成します。<?xml version="1.0" ?> <layer-spec xmlns="urn:jboss:galleon:layer-spec:1.0" name="mariadb-datasource"> <dependencies> <layer name="mariadb-driver"/>1 </dependencies> <feature spec="subsystem.datasources.data-source">2 <param name="data-source" value="MariaDBDS"/> <param name="jndi-name" value="java:jboss/datasources/${env.MARIADB_DATASOURCE:MariaDBDS}"/> <param name="connection-url" value="jdbc:mariadb://${env.MARIADB_HOST:localhost}:${env.MARIADB_PORT:3306}/${env.MARIADB_DATABASE}"/>3 <param name="driver-name" value="mariadb"/> <param name="user-name" value="${env.MARIADB_USER}"/>4 <param name="password" value="${env.MARIADB_PASSWORD}"/> </feature> </layer-spec>- 1
- この依存関係により、データソースがプロビジョニングされるときに MariaDB ドライバーのプロビジョニングが強制されます。レイヤーが依存するすべてのレイヤーは、そのレイヤーがプロビジョニングされるときに自動的にプロビジョニングされます。
- 2
- MariaDBDS という名前のデータソースを使用してデータソースサブシステム設定を更新します。
- 3
- データソースの名前、ホスト、ポート、およびデータベースの値は、サーバーの起動時に設定される環境変数
MARIADB_DATASOURCE、MARIADB_HOST、MARIADB_PORT、およびMARIADB_DATABASEから解決されます。 - 4
- ユーザー名とパスワードの値は、環境変数
MARIADB_USERおよびMARIADB_PASSWORDから解決されます。
次のコマンドを実行して、Galeon 機能パックをビルドします。
mvn clean installファイル
target/mariadb-galleon-pack-1.0-SNAPSHOT.zipが作成されます。
5.3.1.3. S2I ビルド中にカスタム Galleon 機能パックを使用する リンクのコピーリンクがクリップボードにコピーされました!
カスタム機能パックは、OpenShift S2I ビルド中に発生する Maven ビルドで使用できるようにする必要があります。これは通常、カスタム機能パックをアーティファクトとして (例: org.example.mariadb:mariadb-galleon-pack:1.0-SNAPSHOT) アクセス可能な Maven リポジトリーにデプロイすることによって実現されます。
導入前に機能パックをテストするには、ローカルで構築された Galleon 機能パックを利用できるようにする EAP S2I ビルダーイメージ機能を使用できます。次の手順例を使用して、PostgreSQL ドライバーの代わりに MariaDB ドライバーを使用して todo-backend EAP クイックスタートをカスタマイズします。
-
todo-backendEAP クイックスタートの詳細は、EAP クイックスタート を参照してください。 - カスタム Galleon 機能パックを使用するための JBoss EAP S2I イメージの設定の詳細は 高度な環境変数を使用した Galleon の設定 を参照してください。
前提条件
- OpenShift コマンドラインがインストールされている
- OpenShift クラスターにログインしている
- クラスターに JBoss EAP OpenShift イメージがインストールされている
-
Red Hat Containerレジストリーへのアクセスを設定しました。詳細については、Red Hat Container Registry を参照してください。 - カスタムガレオン機能パックを作成しました。詳細は、Maven プロジェクトの準備 を参照してください。
手順
次のコマンドを実行して、MariaDB データベースを開始します。
oc new-app -e MYSQL_USER=admin -e MYSQL_PASSWORD=admin -e MYSQL_DATABASE=mariadb registry.redhat.io/rhscl/mariadb-101-rhel7OpenShift サービス
mariadb-101-rhel7が作成され、開始されます。Maven プロジェクトディレクトリー
mariadb-galleon-pack内で次のコマンドを実行して、カスタム機能パック Maven ビルドによって生成された機能パック ZIP アーカイブからシークレットを作成します。oc create secret generic mariadb-galleon-pack --from-file=target/mariadb-galleon-pack-1.0-SNAPSHOT.zip秘密の
mariadb-galleon-packが作成されます。S2I ビルドを開始するときに、このシークレットを使用してフィーチャーパックの .zip ファイルを Pod にマウントし、サーバーのプロビジョニングフェーズでファイルを使用できるようにします。新しい OpenShift ビルドを作成して、Galleon でトリミングされたサーバー内で実行される
todo-backendクイックスタートデプロイメントを含むアプリケーションイメージをビルドするには、次のコマンドを実行します。oc new-build jboss-eap74-openjdk11-openshift:latest~https://github.com/jboss-developer/jboss-eap-quickstarts#EAP_7.4.0.GA \ --context-dir=todo-backend \ --env=GALLEON_PROVISION_FEATURE_PACKS="org.example.mariadb:mariadb-galleon-pack:1.0-SNAPSHOT" \1 --env=GALLEON_PROVISION_LAYERS="jaxrs-server,mariadb-datasource" \2 --env=GALLEON_CUSTOM_FEATURE_PACKS_MAVEN_REPO="/tmp/repo" \3 --env=MAVEN_ARGS_APPEND="-Dcom.redhat.xpaas.repo.jbossorg" \ --build-secret=mariadb-galleon-pack:/tmp/repo/org/example/mariadb/mariadb-galleon-pack/1.0-SNAPSHOT \4 --name=todos-app-build- 1
- 機能パックの Maven 座標のコンマ区切りリストを含むカスタム機能パック環境変数 (
groupId:artifactId:versionなど)。 - 2
- サーバーのプロビジョニングに使用される Galleon レイヤーのセット。
jaxrs-serverは基本サーバー層で、mariadb-datasourceは MariaDB ドライバーと新しいデータソースをサーバーインストールにもたらすカスタム層です。 - 3
- MariaDB 機能パックを含むイメージ内のローカル Maven リポジトリーの場所。このリポジトリーは、イメージ内にシークレットをマウントするときに設定されます。
- 4
mariadb-galleon-packシークレットは、/tmp/repo/org/example/mariadb/mariadb-galleon-pack/1.0-SNAPSHOTディレクトリーにマウントされます。
作成した OpenShift ビルドから新しいビルドを開始するには、次のコマンドを実行します。
oc start-build todos-app-buildコマンドが正常に実行されると、イメージ
todos-app-buildが作成されます。新しいデプロイメントを作成するには、次のコマンドを実行して、実行中の MariaDB データベースにデータソースをバインドするために必要な環境変数を指定します。
oc new-app --name=todos-app todos-app-build \ --env=MARIADB_PORT=3306 \ --env=MARIADB_USER=admin \ --env=MARIADB_PASSWORD=admin \ --env=MARIADB_HOST=mariadb-101-rhel7 \ --env=MARIADB_DATABASE=mariadb \ --env=MARIADB_DATASOURCE=ToDos1 - 1
- クイックスタートでは、データソースの名前が
ToDosであることを想定しています。
注記カスタム Galleon 機能パック環境変数の詳細は、カスタム Galleon 機能パック環境変数 を参照してください。
todos-appアプリケーションを公開するには、次のコマンドを実行します。oc expose svc/todos-app新しいタスクを作成するには、次のコマンドを実行します。
curl -X POST http://$(oc get route todos-app --template='{{ .spec.host }}') \ -H 'Content-Type: application/json' \ -d '{"title":"todo1"}'タスクのリストにアクセスするには、次のコマンドを実行します。
curl http://$(oc get route todos-app --template='{{ .spec.host }}')追加されたタスクがブラウザーに表示されます。
5.3.1.4. JBoss EAP のカスタムプロビジョニングファイル リンクのコピーリンクがクリップボードにコピーされました!
カスタムプロビジョニングファイルは、galleon サブディレクトリーに保存されている provisioning.xml というファイル名の XML ファイルです。
Provisioning.xml ファイルの使用は、GALLEON_PROVISION_FEATURE_PACKS および GALLEON_PROVISION_LAYERS 環境変数を使用する代わりに使用できます。S2I ビルド中に、provisioning.xml ファイルを使用してカスタム EAP サーバーをプロビジョニングします。
GALLEON_PROVISION_LAYERS 環境変数を使用する場合は、カスタムプロビジョニングファイルを作成しないでください。この環境変数は、ファイルを無視するように S2I ビルドプロセスを設定するためです。
以下のコードは、カスタムプロビジョニングファイルを示しています。
<?xml version="1.0" ?>
<installation xmlns="urn:jboss:galleon:provisioning:3.0">
<feature-pack location="eap-s2i@maven(org.jboss.universe:s2i-universe)">
<default-configs inherit="false"/>
<packages inherit="false"/>
</feature-pack>
<feature-pack location="org.example.mariadb:mariadb-galleon-pack:1.0-SNAPSHOT">
<default-configs inherit="false"/>
<packages inherit="false"/>
</feature-pack>
<config model="standalone" name="standalone.xml">
<layers>
<include name="jaxrs-server"/>
<include name="mariadb-datasource"/>
</layers>
</config>
<options>
<option name="optional-packages" value="passive+"/>
</options>
</installation>
- 1
- この要素は、現在の eap-s2i feature-pack をプロビジョニングするようにプロビジョニングプロセスに指示します。ビルダーイメージには単一の機能パックのみが含まれていることに注意してください。
- 2
- この要素は、デフォルト設定を除外するようにプロビジョニングプロセスに指示します。
- 3
- この要素は、デフォルトパッケージを除外するようにプロビジョニングプロセスに指示します。
- 4
- この要素は、プロビジョニングプロセスに
org.example.mariadb:mariadb-galleon-pack:1.0-SNAPSHOTフィーチャーパックをプロビジョニングするように指示します。子要素は、デフォルトの設定およびデフォルトパッケージを除外するようプロセスに指示します。 - 5
- この要素は、カスタムスタンドアロン設定を作成するようにプロビジョニングプロセスに指示します。この設定には、
jaxrs-server基本レイヤーとorg.example.mariadb:mariadb-galleon-pack:1.0-SNAPSHOTフィーチャーパックのmariadb-datasourceカスタムレイヤーが含まれています。 - 6
- この要素は、JBoss EAP モジュールのプロビジョニングを最適化するようプロビジョニングプロセスに指示します。
関連情報
-
GALLEON_PROVISION_LAYERS環境変数の使用の詳細については、カスタム JBoss EAP サーバーのプロビジョニング を参照してください。
5.3.2. 高度な環境変数を使用して Galleon を設定 リンクのコピーリンクがクリップボードにコピーされました!
高度なカスタム Galleon 機能パック環境変数を使用して、S2I イメージビルドプロセス中にカスタム Galleon 機能パックとレイヤーを保存する場所をカスタマイズできます。これらの高度なカスタム Galleon 機能パック環境変数は次のとおりです。
-
GALLEON_DIR=<path>: これは、デフォルトの<project_root_dir>/galleonディレクトリーパスを<project_root_dir>/<GALLEON_DIR>に上書きします。 -
GALLEON_CUSTOM_FEATURE_PACKS_MAVEN_REPO = <path>。これは、<project root dir>/galleon/repositoryディレクトリーパスを、Maven ローカルリポジトリーキャッシュディレクトリーへの絶対パスでオーバーライドします。このリポジトリーには、カスタム Galleon 機能パックが含まれています。
Galleon 機能パックのアーカイブファイルは、Maven ローカルキャッシュファイルシステム設定に準拠したサブディレクトリー内に配置する必要があります。たとえば、path-to-repository/org/examples/my-feature-pack/1.0.0.Final/my-feature-pack-1.0.0.Final.zip パス内の org.examples:my-feature-pack:1.0.0.Final 機能パックを見つけます。
<project_root>/<GALLEON_DIR> ディレクトリーに settings.xml ファイルを作成することにより、Maven プロジェクト設定を設定できます。GALLEON_DIR のデフォルト値は <project_root_dir>/galleon です。Maven はこのファイルを使用して、アプリケーション用のカスタム Galleon 機能パックをプロビジョニングします。settings.xml ファイルを作成しない場合、Maven は S2I イメージによって作成されたデフォルトの settings.xml ファイルを使用します。
S2I ビルダーイメージはローカル Maven リポジトリーの場所を指定するため、settings.xml ファイルでローカル Maven リポジトリーの場所を指定しないでください。S2I ビルダーイメージは、S2I ビルドプロセス中にこの場所を使用します。
関連情報
- カスタム Galleon 機能パック環境変数の詳細については、カスタム Galleon 機能パック環境変数 を参照してください。
5.3.3. カスタム Galleon feature-pack 環境変数 リンクのコピーリンクがクリップボードにコピーされました!
以下のカスタム Galleon 機能パック環境変数のいずれかを使用して、JBoss EAP S2I イメージの使用方法をカスタマイズできます。
| 環境変数 | 説明 |
|---|---|
| GALLEON_DIR=<path> |
ここで、<path> は、アプリケーションプロジェクトの root ディレクトリーに相対的なディレクトリーです。<path> ディレクトリーには、
デフォルトのディレクトリーは |
| GALLEON_CUSTOM_FEATURE_PACKS_MAVEN_REPO=<path> |
<path> は、カスタム feature-packs を含む Maven ローカルリポジトリーディレクトリーの絶対パスです。ディレクトリーのデフォルトは |
| GALLEON_PROVISION_FEATURE_PACKS=<list_of_galleon_feature_packs> | <list_of_galleon_feature_packs> は、Maven コーディネートによって識別されるカスタム Galleon feature-packs のコンマ区切りリストです。一覧表示されている feature-packs は、ビルダーイメージにある JBoss EAP 7.4 サーバーのバージョンと互換性がある必要があります。
|