8.2. JBoss EAP でのユーザーによるレイヤーのプロビジョニング
Red Hat から利用可能なレイヤーのプロビジョニングを行うに加え、開発するカスタムレイヤーをプロビジョニングできます。
手順
Galleon Maven プラグインを使用してカスタムレイヤーを構築します。
詳細は、Maven プロジェクトの準備 を参照してください。
- アクセス可能な Maven リポジトリーにカスタムレイヤーをデプロイします。
カスタム Galleon 機能パック環境変数を使用して、S2I イメージビルドプロセス中に Galleon 機能パックとレイヤーをカスタマイズできます。
Galleon 機能パックとレイヤーのカスタマイズの詳細は、S2I ビルド時のカスタム Galleon 機能パックの使用 を参照してください。
オプション: ユーザー定義のレイヤーとサポートされる JBoss EAP レイヤーを参照するカスタムプロビジョニングファイルを作成し、これをアプリケーションディレクトリーに保存します。
カスタムプロビジョニングファイルの作成の詳細は、Galleon プロビジョニングファイル を参照してください。
S2I プロセスを実行して、OpenShift で JBoss EAP サーバーをプロビジョニングします。
詳細は、S2I ビルド時のカスタム Galleon 機能パックの使用 を参照してください。
8.2.1. JBoss EAP のカスタム Galleon レイヤーのビルドと使用 リンクのコピーリンクがクリップボードにコピーされました!
カスタム Galleon レイヤーは、JBoss EAP 8.0 で動作するように設計された Galleon 機能パック内にパッケージ化します。
Openshift では、JBoss EAP 8.0 サーバー用の MariaDB ドライバーやデータソースなどをプロビジョニングするためのレイヤーを含む Galleon 機能パックをビルドして使用できます。レイヤーには、サーバーにインストールされているコンテンツが含まれています。レイヤーは、サーバーの XML 設定ファイルを更新し、コンテンツをサーバーのインストールに追加できます。
このセクションでは、OpenShift で JBoss EAP 8.0 サーバー用の MariaDB ドライバーとデータソースをプロビジョニングするためのレイヤーを含む Galleon 機能パックをビルドおよび使用する方法を説明します。
8.2.1.1. Maven プロジェクトの準備 リンクのコピーリンクがクリップボードにコピーされました!
Galleon 機能パックは、Maven を使用して作成されます。この手順には、新しい Maven プロジェクトを作成する手順が含まれています。
手順
次のコマンドを実行して、新しい Maven プロジェクトを作成します。
mvn archetype:generate -DarchetypeGroupId=org.codehaus.mojo.archetypes -DarchetypeArtifactId=pom-root -DgroupId=org.jboss.eap.demo -DartifactId=mariadb-galleon-pack -DinteractiveMode=falsemariadb-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ファイルを更新して、JBoss EAP Galleon 機能パックと MariaDB ドライバーへの依存関係を追加します。<dependencies> <dependency> <groupId>org.jboss.eap</groupId> <artifactId>wildfly-ee-galleon-pack</artifactId> <version>8.0.0.GA-redhat-00010</version> <type>zip</type> </dependency> <dependency> <groupId>org.mariadb.jdbc</groupId> <artifactId>mariadb-java-client</artifactId> <version>2.7.2</version> </dependency> </dependencies>注記-
<version>A.B.C-redhat-XXXXX</version>A.B.Cはリリース番号、XXXXXは JBoss EAP インスタンスのビルド番号です。JBoss EAP リリースのバージョンの詳細は、Red Hat Maven リポジトリーを参照してください。リリース番号とビルド番号は、すべての JBoss EAP リリースで利用できます。https://maven.repository.redhat.com/earlyaccess/all/org/jboss/eap/wildfly-ee-galleon-pack/.
-
pom.xmlファイルを更新して、Galleon 機能パックのビルドに使用される Maven プラグインを含めます。<build> <plugins> <plugin> <groupId>org.wildfly.galleon-plugins</groupId> <artifactId>wildfly-galleon-maven-plugin</artifactId> <version>6.4.8.Final-redhat-00001</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>
8.2.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="java.se"/> <module name="jakarta.transaction.api"/> <module name="jdk.net"/> </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 という名前のデータソースで
datasourcesサブシステム設定を更新します。 - 3
- データソースの名前、ホスト、ポート、およびデータベースの値は、サーバーの起動時に設定される環境変数
MARIADB_DATASOURCE、MARIADB_HOST、MARIADB_PORT、およびMARIADB_DATABASEから解決されます。 - 4
- ユーザー名とパスワードの値は、環境変数
MARIADB_USERおよびMARIADB_PASSWORDから解決されます。
次のコマンドを実行して、Galleon 機能パックをビルドします。
mvn clean installファイル
target/mariadb-galleon-pack-1.0-SNAPSHOT.zipが作成されます。
8.2.1.3. S2I ビルド時のカスタム Galleon 機能パックの使用 リンクのコピーリンクがクリップボードにコピーされました!
カスタム機能パックは、OpenShift S2I ビルド中に発生する Maven ビルドで使用できるようにする必要があります。これは通常、アクセス可能な Maven リポジトリーに org.jboss.eap.demo:mariadb-galleon-pack:1.0-SNAPSHOT などのカスタム機能パックをアーティファクトとしてデプロイすることによって実現されます。
カスタム Galleon 機能パックを使用するための JBoss EAP S2I イメージの設定の詳細は、高度な環境変数を使用した Galleon の設定 を参照してください。
前提条件
-
ocコマンドラインがインストールされている - OpenShift クラスターにログインしている
-
Red Hat Containerレジストリーへのアクセスを設定しました。詳細は、Red Hat Container Registry を参照してください。 - カスタムガレオン機能パックを作成しました。詳細は、Maven プロジェクトの準備 を参照してください。
手順
次のコマンドを実行して、
MariaDBデータベースを開始します。この例では、MariaDBimage mariadb-105-rhel7を使用します。サポートされている最新バージョンのMariaDBイメージを使用する必要があります。MariaDB imagesの詳細は、Red Hat Ecosystem Catalog を参照してください。oc new-app -e MYSQL_USER=admin -e MYSQL_PASSWORD=admin -e MYSQL_DATABASE=mariadb registry.redhat.io/rhscl/mariadb-105-rhel7OpenShift サービス
mariadb-101-rhel7が作成され、開始されます。Maven プロジェクトディレクトリー
mariadb-galleon-pack内で次のコマンドを実行して、カスタム機能パック Maven ビルドによって生成された機能パックアーカイブからシークレットを作成します。oc create secret generic mariadb-galleon-pack --from-file=target/mariadb-galleon-pack-1.0-SNAPSHOT.zipシークレット
mariadb-galleon-packが作成されます。S2I ビルドを開始するときに、このシークレットを使用して機能パックの .zip ファイルを Pod にマウントし、サーバーのプロビジョニングフェーズでファイルを使用できるようにします。
8.2.1.4. JBoss EAP 8 イメージストリームのインポート リンクのコピーリンクがクリップボードにコピーされました!
以下の手順に従って、JBoss EAP 8.0 イメージストリームをインポートできます。
手順
JBoss EAP 8.0 イメージストリームをインポートします。
oc import-image jboss-eap-8/eap8-openjdk17-builder-openshift-rhel8:latest --from=registry.redhat.io/jboss-eap-8/eap8-openjdk17-builder-openshift-rhel8:latest --confirm
8.2.1.4.1. JBoss EAP maven プラグインを使用した S2I ビルドの作成 リンクのコピーリンクがクリップボードにコピーされました!
eap-maven-plugin は、JBoss EAP galleon feature-pack、JBoss EAP cloud galleon feature-pack、および mariadb galleon feature-pack への参照の両方で設定されています。pom.xml の抜粋を参照してください。
<feature-packs>
<feature-pack>
<location>org.jboss.eap:wildfly-ee-galleon-pack</location>
</feature-pack>
<feature-pack>
<location>org.jboss.eap.cloud:eap-cloud-galleon-pack</location>
</feature-pack>
<feature-pack>
<location>org.jboss.eap.demo:mariadb-galleon-pack:1.0-SNAPSHOT</location>
</feature-pack>
</feature-packs>
<layers>
<layer>jaxrs-server</layer>
<layer>mariadb-datasource</layer>
</layers>
手順
次のコマンドを実行して、S2I ビルドを作成します。
oc new-build eap8-openjdk17-builder-openshift-rhel8:latest~https://github.com/jboss-container-images/jboss-eap-8-openshift-image#EAP_8.0.0 \ --context-dir=examples/eap/custom-layers/application \ --build-secret=mariadb-galleon-pack:/tmp/demo-maven-repository/org/jboss/eap/demo/mariadb-galleon-pack/1.0-SNAPSHOT \1 --name=mariadb-app-build- 1
mariadb-galleon-packシークレットは/tmp/demo-maven-repository/org/jboss/eap/demo/mariadb-galleon-pack/1.0-SNAPSHOTディレクトリーにマウントされます。
関連情報
詳細は、JBoss EAP 8.0 のデモの例 を参照してください。
8.2.1.4.2. 従来の S2I プロビジョニング機能を使用して S2I ビルドを作成する リンクのコピーリンクがクリップボードにコピーされました!
サーバーをプロビジョニングできるように、openshift-legacy プロファイルを使用して S2I ビルドを設定できます。
手順
次のコマンドを実行して、新しい OpenShift ビルドを作成します。
oc new-build eap8-openjdk17-builder-openshift-rhel8:latest~https://github.com/jboss-container-images/jboss-eap-8-openshift-image#EAP_8.0.0 \ --context-dir=examples/eap/custom-layers/application \ --env=GALLEON_PROVISION_CHANNELS="org.jboss.eap.channels:eap-8.0" \1 --env=GALLEON_PROVISION_FEATURE_PACKS="org.jboss.eap:wildfly-ee-galleon-pack,org.jboss.eap.cloud:eap-cloud-galleon-pack,org.jboss.eap.demo:mariadb-galleon-pack:1.0-SNAPSHOT" \2 --env=GALLEON_PROVISION_LAYERS="jaxrs-server,mariadb-datasource" \3 --env=GALLEON_CUSTOM_FEATURE_PACKS_MAVEN_REPO="/tmp/demo-maven-repository" \4 --env=MAVEN_ARGS="-Popenshift-legacy" \5 --build-secret=mariadb-galleon-pack:/tmp/demo-maven-repository/org/jboss/eap/demo/mariadb-galleon-pack/1.0-SNAPSHOT \6 --name=mariadb-app-build- 1
- この環境変数は、プロビジョニング中に JBoss EAP 8.0 チャネルを使用します。
- 2
- この環境変数は、JBoss EAP 8.0 の
feature-pack、cloud feature-pack、およびmariadb feature-packを参照します。 - 3
- この環境変数は、サーバーのプロビジョニングに使用する Galleon 層のセットを参照します。
jaxrs-serverはベースサーバーレイヤーです。mariadb-datasourceは、mariadbドライバーと新しいデータソースをサーバーインストールにもたらすカスタムレイヤーです。 - 4
- これは、
mariadb feature-packが含まれているローカルの Maven リポジトリーの場所を指します。 - 5
- この環境変数は
MAVEN_ARGSを再定義してopenshift-legacyプロファイルを有効にします。 - 6
mariadb-galleon-packシークレットは/tmp/demo-maven-repository/org/jboss/eap/demo/mariadb-galleon-pack/1.0-SNAPSHOTディレクトリーにマウントされます。
このディレクトリーパスは、パスマッピングへの Maven リポジトリーアーティファクト座標に準拠しています。
8.2.1.4.3. ビルドの開始 リンクのコピーリンクがクリップボードにコピーされました!
新しいビルドを作成することで、mariadb-app-build イメージを作成できます。
手順
以前に作成したものと同じ OpenShift ビルドから新しいビルドを開始し、次のコマンドを実行します。
oc start-build mariadb-app-buildコマンドの実行が成功すると、イメージ
mariadb-app-buildが作成されます。
8.2.1.4.4. 新しいデプロイメントの作成 リンクのコピーリンクがクリップボードにコピーされました!
データソースを実行中の MariaDB データベースにバインドするために必要な環境変数を指定することで、新しいデプロイメントを作成できます。
手順
次のコマンドを実行して、新しいデプロイを作成します。
oc new-app --name=mariadb-app mariadb-app-build \ --env=MARIADB_PORT=3306 \ --env=MARIADB_USER=admin \ --env=MARIADB_PASSWORD=admin \ --env=MARIADB_HOST=mariadb-105-rhel7 \ --env=MARIADB_DATABASE=mariadb \ --env=MARIADB_DATASOURCE=Demo1 - 1
- デモは、データソースの名前が
Demoであることを想定しています。
注記カスタム Galleon 機能パック環境変数の詳細は、カスタム Galleon 機能パック環境変数 を参照してください。
mariadb-appアプリケーションを公開し、次のコマンドを実行します。oc expose svc/mariadb-app新しいタスクを作成するには、次のコマンドを実行します。
curl -X POST http://$(oc get route mariadb-app --template='{{ .spec.host }}')/tasks/title/fooタスクのリストにアクセスするには、次のコマンドを実行します。
curl http://$(oc get route mariadb-app --template='{{ .spec.host }}')追加されたタスクがブラウザーに表示されます。
8.2.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 ビルドプロセス中にこの場所を使用します。
8.2.3. カスタム Galleon 機能パック環境変数 リンクのコピーリンクがクリップボードにコピーされました!
以下のカスタム Galleon 機能パック環境変数のいずれかを使用して、JBoss EAP S2I イメージの使用方法をカスタマイズできます。
| 環境変数 | 説明 |
|---|---|
| GALLEON_DIR=<path> |
ここで、<path> は、アプリケーションプロジェクトの root ディレクトリーに相対的なディレクトリーです。<path> ディレクトリーには、
デフォルトのディレクトリーは |
| GALLEON_CUSTOM_FEATURE_PACKS_MAVEN_REPO=<path> |
<path> は、カスタム機能パックを含む Maven ローカルリポジトリーディレクトリーへの絶対パスです。ディレクトリーのデフォルトは |
| GALLEON_PROVISION_FEATURE_PACKS=<list_of_galleon_feature_packs> | <list_of_galleon_feature_packs> は、Maven コーディネートによって識別されるカスタム Galleon 機能パックのコンマ区切りリストです。リストする機能パックは、ビルダーイメージに存在する JBoss EAP 8.0 サーバーのバージョンと互換性がある必要があります。
|