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=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
ファイルを更新して、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
ファイルを更新して、Galeon 機能パックのビルドに使用される 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
から解決されます。
次のコマンドを実行して、Galeon 機能パックをビルドします。
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
データベースを開始します。この例では、MariaDB
image 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-rhel7
OpenShift サービス
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>1 </feature-pack> </feature-packs> <layers> <layer>jaxrs-server</layer> <layer>mariadb-datasource</layer>2 </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=Demo 1
- 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 サーバーのバージョンと互換性がある必要があります。
|