3.2. OpenShift Container Platform へのアプリケーションのデプロイ
source-to-image (S2I) ワークフローを使用して、OpenShift Container Platform 上の JBoss EAP にアプリケーションをデプロイできます。S2I ワークフローは、Git リポジトリーからソースコードを取得し、使用する言語とフレームワークをベースとするコンテナーに挿入します。S2I ワークフローが完了すると、src
コードがコンパイルされ、アプリケーションがパッケージ化されて JBoss EAP サーバーにデプロイされます。
3.2.1. OpenShift Container Platform へのデプロイに向けたアプリケーションの準備
OpenShift Container Platform は、Git リポジトリーでホストされるアプリケーションを使用します。アプリケーションを OpenShift にデプロイするには、まずアプリケーションを Git リポジトリーにプッシュする必要があります。その後、JBoss EAP Helm チャートを使用してアプリケーションのデプロイを設定できます。
前提条件
アプリケーションを作成している。
詳細は、Hello World サーブレットの作成 を参照してください。
- Git リポジトリーを作成している。
手順
アプリケーションがローカル Git リポジトリーにまだない場合は、アプリケーションをローカル Git リポジトリーに移動します。
$ mv -r helloworld/ <your_git_repo>
pom.xml
設定ファイルで次のプロパティーを定義します。<properties> ... <version.plugin.eap>1.0.0.Final-redhat-00013</version.plugin.eap> 1 </properties>
- 1
<version.plugin.eap>
は、JBoss EAP Maven プラグインのバージョンを定義します。
JBoss EAP Maven プラグインを
<project>
セクション内の<build>
セクションの<pluginManagement>
に追加します。<project> ... <build> <pluginManagement> <plugins> ... <plugin> <groupId>org.jboss.eap.plugins</groupId> <artifactId>eap-maven-plugin</artifactId> <version>${version.plugin.eap}</version> </plugin> </plugins> </pluginManagement> </build> </project>
pom.xml
設定ファイルにプロファイル "openshift" を作成します。このプロファイルで、OpenShift Container Platform へのデプロイに必要なプラグイン、機能パック、およびレイヤーを定義します。
<profiles> <profile> <id>openshift</id> <build> <plugins> <plugin> <groupId>org.jboss.eap.plugins</groupId> <artifactId>eap-maven-plugin</artifactId> 1 <configuration> <channels> <channel> <manifest> <groupId>org.jboss.eap.channels</groupId> <artifactId>eap-8.0</artifactId> </manifest> </channel> </channels> <feature-packs> <feature-pack> 2 <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-packs> <layers> 3 <layer>cloud-server</layer> </layers> <name>ROOT.war</name> 4 </configuration> <executions> <execution> <goals> <goal>package</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </profile> </profiles>
- 1
wildfly-maven-plugin
は、アプリケーションがデプロイされた JBoss EAP インスタンスを OpenShift Container Platform 上にプロビジョニングするための JBoss EAP プラグインです。- 2
feature-packs
は、機能パック (サーバーを動的にプロビジョニングする機能を含む zip ファイル) を定義します。この場合、機能パックorg.wildfly:wildfly-galleon-pack
およびorg.wildfly.cloud:wildfly-cloud-galleon-pack
が必要です。- 3
layers
は、プロビジョニングされたサーバーに含めるレイヤーを (設定した機能パックから) 定義します。各レイヤーは、単独で、または他のレイヤーと組み合わせてインストールできる 1 つ以上のサーバー機能を特定します。ここでは、クラウドサーバーに適した JBoss EAP の基本機能のみをプロビジョニングするcloud-server
レイヤーを選択します。- 4
<name>ROOT.war</name>
: 生成されるアプリケーションの Web アーカイブ (WAR) の名前を定義します。ROOT.war
を指定すると、アプリケーションはサーバーのルートパスにデプロイされます。指定しないと、<name/>
相対パスにデプロイされます。
アプリケーションがコンパイルされることを確認します。
$ mvn package -Popenshift
- 変更をリポジトリーにプッシュします。
3.2.2. Helm を使用した OpenShift 上の JBoss EAP へのアプリケーションのデプロイ
JBoss EAP Helm チャートを使用して、Helm を使用してアプリケーションを設定し、OpenShift 上の JBoss EAP にデプロイします。
前提条件
OpenShift Container Platform にデプロイするアプリケーションの準備が完了している。
詳細は、OpenShift Container Platform へのデプロイに向けたアプリケーションの準備 を参照してください。
OpenShift Container Platform でプロジェクトを作成している。
詳細は、プロジェクトの使用 を参照してください。
OpenShift CLI (
oc
) をインストールしている。詳細は、OpenShift CLI のインストール を参照してください。
マシンから OpenShift Container Platform にログインしている。
詳細は、OpenShift CLI へのログイン を参照してください。
Helm をインストールしている。
詳細は、Installing Helm を参照してください。
手順
アプリケーションのルートディレクトリーに
charts
というディレクトリーを作成し、そこに移動します。アプリケーションのルートディレクトリーは、pom.xml
設定ファイルを含んでいるディレクトリーです。$ mkdir charts; cd charts
次の内容を含む
helm.yaml
ファイルを作成します。build: uri: https://github.com/<user>/<repository>.git 1 ref: <branch_name> 2 contextDir: helloworld 3 deploy: replicas: 1 4
Helm で JBoss EAP リポジトリーを設定します。
まだ JBoss EAP リポジトリーを Helm に追加していない場合は、追加します。
$ helm repo add jboss-eap https://jbossas.github.io/eap-charts/
すでに JBoss EAP リポジトリーを Helm に追加している場合は、それを更新します。
$ helm repo update jboss-eap
Helm を使用してアプリケーションをデプロイします。
$ helm install helloworld -f helm.yaml jboss-eap/eap8
デプロイが完了するまでに数分かかる場合があります。
検証
デプロイメントへのルートの URL を取得します。
$ APPLICATION_URL=https://$(oc get route helloworld --template='{{ .spec.host }}') && echo "" && echo "Application URL: $APPLICATION_URL"
ブラウザーで "Application URL" に移動します。
"/HelloWorld" パスのサーブレットにリダイレクトされ、次のメッセージが表示されます。
Hello World!