検索

8.2. JBoss EAP でのユーザーによるレイヤーのプロビジョニング

download PDF

Red Hat から利用可能なレイヤーのプロビジョニングを行うに加え、開発するカスタムレイヤーをプロビジョニングできます。

手順

  1. Galleon Maven プラグインを使用してカスタムレイヤーを構築します。

    詳細は、Maven プロジェクトの準備 を参照してください。

  2. アクセス可能な Maven リポジトリーにカスタムレイヤーをデプロイします。
  3. カスタム Galleon 機能パック環境変数を使用して、S2I イメージビルドプロセス中に Galleon 機能パックとレイヤーをカスタマイズできます。

    Galleon 機能パックとレイヤーのカスタマイズの詳細は、S2I ビルド時のカスタム Galleon 機能パックの使用 を参照してください。

  4. オプション: ユーザー定義のレイヤーとサポートされる JBoss EAP レイヤーを参照するカスタムプロビジョニングファイルを作成し、これをアプリケーションディレクトリーに保存します。

    カスタムプロビジョニングファイルの作成の詳細は、Galleon プロビジョニングファイル を参照してください。

  5. 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 プロジェクトを作成する手順が含まれています。

手順

  1. 次のコマンドを実行して、新しい Maven プロジェクトを作成します。

    mvn archetype:generate -DarchetypeGroupId=org.codehaus.mojo.archetypes -DarchetypeArtifactId=pom-root -DgroupId=org.jboss.eap.demo -DartifactId=mariadb-galleon-pack -DinteractiveMode=false
  2. 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>
  3. 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>
    注記
  4. 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 ドライバーとデータソースレイヤーを含む機能パックなど) にレイヤーを追加するのに役立ちます。

前提条件

手順

  1. カスタム機能パック Maven プロジェクト内に src/main/resources ディレクトリーを作成します。Maven プロジェクトの準備 を参照してください。このディレクトリーは、機能パックのコンテンツを含むルートディレクトリーです。
  2. ディレクトリー src/main/resources/modules/org/mariadb/jdbc/main を 作成します。
  3. 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>
    1
    MariaDB ドライバーの groupIdartifactId。プロビジョニング時に、実際のドライバー JAR ファイルがインストールされます。ドライバーのバージョンは、pom.xml ファイルから参照されます。
    2
    MariaDB ドライバーの JBoss Modules モジュールの依存関係。
  4. ディレクトリー src/main/resources/layers/standalone/を 作成します。これは、ガレオン機能パックが定義しているすべてのレイヤーのルートディレクトリーです。
  5. ディレクトリー src/main/resources/layers/standalone/mariadb-driver を 作成します。
  6. 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>
    1
    モジュール org.mariadb.jdbc によって実装された MariaDB という名前の JDBC ドライバーを使用して、datasources サブシステムの設定を更新します。
    2
    レイヤーのプロビジョニング時にインストールされるドライバークラスを含む JBoss Modules モジュール。

    mariadb-driver レイヤーは、JBoss Modules モジュールによって実装された JDBC ドライバーの設定で datasources サブシステムを更新します。

  7. ディレクトリー src/main/resources/layers/standalone/mariadb-datasource を作成します。
  8. 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_DATASOURCEMARIADB_HOSTMARIADB_PORT、および MARIADB_DATABASE から解決されます。
    4
    ユーザー名とパスワードの値は、環境変数 MARIADB_USER および MARIADB_PASSWORD から解決されます。
  9. 次のコマンドを実行して、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 プロジェクトの準備 を参照してください。

手順

  1. 次のコマンドを実行して、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 が作成され、開始されます。

  2. 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 イメージストリームをインポートできます。

手順

  1. 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>
1
mariadb feature-pack バージョンが必要です。JBoss EAP 8 で設定されたチャネルでは解決されません。
2
mariadb-datasource レイヤー。

手順

  1. 次のコマンドを実行して、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 ビルドを設定できます。

手順

  1. 次のコマンドを実行して、新しい 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-packcloud 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 イメージを作成できます。

手順

  1. 以前に作成したものと同じ OpenShift ビルドから新しいビルドを開始し、次のコマンドを実行します。

    oc start-build mariadb-app-build

    コマンドの実行が成功すると、イメージ mariadb-app-build が作成されます。

8.2.1.4.4. 新しいデプロイメントの作成

データソースを実行中の MariaDB データベースにバインドするために必要な環境変数を指定することで、新しいデプロイメントを作成できます。

手順

  1. 次のコマンドを実行して、新しいデプロイを作成します。

    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 機能パック環境変数 を参照してください。

  2. mariadb-app アプリケーションを公開し、次のコマンドを実行します。

    oc expose svc/mariadb-app
  3. 新しいタスクを作成するには、次のコマンドを実行します。

    curl -X POST http://$(oc get route mariadb-app --template='{{ .spec.host }}')/tasks/title/foo
  4. タスクのリストにアクセスするには、次のコマンドを実行します。

    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 イメージの使用方法をカスタマイズできます。

表8.1 カスタム Galleon 機能パック環境変数の説明
環境変数説明

GALLEON_DIR=<path>

ここで、<path> は、アプリケーションプロジェクトの root ディレクトリーに相対的なディレクトリーです。<path> ディレクトリーには、settings.xml ファイルやローカル Maven リポジトリーキャッシュなどのオプションの Galleon カスタムコンテンツが含まれています。このキャッシュには、カスタム Galleon 機能パックが含まれています。

デフォルトのディレクトリーは galleon です。

GALLEON_CUSTOM_FEATURE_PACKS_MAVEN_REPO=<path>

<path> は、カスタム機能パックを含む Maven ローカルリポジトリーディレクトリーへの絶対パスです。ディレクトリーのデフォルトは galleon/repository に設定されます。

GALLEON_PROVISION_FEATURE_PACKS=<list_of_galleon_feature_packs>

<list_of_galleon_feature_packs> は、Maven コーディネートによって識別されるカスタム Galleon 機能パックのコンマ区切りリストです。リストする機能パックは、ビルダーイメージに存在する JBoss EAP 8.0 サーバーのバージョンと互換性がある必要があります。

GALLEON_PROVISION_LAYERS 環境変数を使用して、カスタム機能パックによって定義された Galleon レイヤーをサーバーに設定できます。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.