1.6. S2I を使用して Red Hat build of Quarkus アプリケーションを OpenShift Container Platform にデプロイする
Source-to-Image (S2I) メソッドを使用して、Red Hat build of Quarkus アプリケーションを OpenShift Container Platform にデプロイできます。S2I では、Git リポジトリーを使用するか、ビルド時にソースをアップロードして、ソースコードをビルドコンテナーに提供する必要があります。
S2I は、ネイティブデプロイメントではサポートされません。ネイティブ実行可能ファイルにコンパイルされた Quarkus アプリケーションをデプロイするには、Docker ビルドストラテジー を使用します。
S2I を使用して Quarkus アプリケーションを OpenShift Container Platform にデプロイする手順は、使用している Java バージョンにより異なります。
1.6.1. S2I を使用して Red Hat build of Quarkus アプリケーションを Java 17 を使用する OpenShift Container Platform にデプロイする リンクのコピーリンクがクリップボードにコピーされました!
Source-to-Image (S2I) メソッドを使用して、Java 17 で実行されている Red Hat build of Quarkus アプリケーションを OpenShift Container Platform にデプロイできます。
前提条件
- Java 17 でビルドされた Quarkus アプリケーションがある。Java 17 アプリケーションの詳細は、S2I を使用して Red Hat build of Quarkus アプリケーションを Java 17 を使用する OpenShift Container Platform にデプロイする を参照してください。
-
(オプション):
quarkus-openshiftエクステンションが含まれる Quarkus Maven プロジェクトがある。 - 必要な OpenShift Container Platform プロジェクトに切り替える で説明されているとおり、正しい OpenShift プロジェクト namespace で作業している。
- Quarkus Maven プロジェクトは Git リポジトリーでホストされている。
手順
pom.xmlファイルを開き、次のように Java 設定をバージョン 17 に変更します。<maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target>Java 17 アプリケーションをパッケージ化するには、次のコマンドを入力します。
./mvnw clean package-
pom.xmlファイルと同じレベルに、.s2iというディレクトリーを作成します。 .s2iディレクトリーにenvironmentという名前のファイルを作成し、以下の内容を追加します。MAVEN_S2I_ARTIFACT_DIRS=target/quarkus-app S2I_SOURCE_DEPLOYMENTS_FILTER=app lib quarkus quarkus-run.jar JAVA_OPTIONS=-Dquarkus.http.host=0.0.0.0 AB_JOLOKIA_OFF=true JAVA_APP_JAR=/deployments/quarkus-run.jar- 変更をリモート Git リポジトリーにコミットし、プッシュします。
次のコマンドを入力して、サポートされている OpenShift Container Platform イメージをインポートします。
oc import-image ubi8/openjdk-17 --from=registry.access.redhat.com/ubi8/openjdk-17 --confirm注記- OpenShift イメージレジストリーを使用し、同じプロジェクト内のイメージストリームからプルしている場合、Pod サービスアカウントにはすでに正しい権限が付与されているはずです。
- 他の OpenShift Container Platform プロジェクトまたは保護されたレジストリーからイメージをプルする場合は、追加の設定手順が必要になることもあります。
詳細は、Red Hat OpenShift Container Platform のドキュメントで イメージプルシークレットの使用 を参照してください。
次のコマンドを入力して、プロジェクトのビルド、アプリケーションの作成、OpenShift Container Platform サービスのデプロイを実行します。
oc new-app registry.access.redhat.com/ubi8/openjdk-17~<git_path> --name=<project_name>ここでは、以下のようになります。
<git_path> は、Quarkus プロジェクトをホストする Git リポジトリーへのパスです。たとえば、
oc new-app registry.access.redhat.com/ubi8/openjdk-17~https://github.com/johndoe/code-with-quarkus.git --name= code-with-quarkusです。Git リポジトリー用に SSH キーを設定していない場合は、Git パスを指定する際に、SSH URL の代わりに HTTPS URL を使用します。
- <project_name> はアプリケーションの名前です。
プロジェクトの更新バージョンをデプロイするには、更新を Git リポジトリーにプッシュしてから、以下のコマンドを入力します。
oc start-build <project_name>次のコマンドを入力して、ルートを Quarkus アプリケーションに公開します。
oc expose svc <project_name>
検証
次のコマンドを入力して、現在の OpenShift プロジェクトに関連付けられている Pod のリストを表示します。
oc get podsアプリケーションの Pod のログ出力を取得するには、以下のコマンドを入力します。
<pod_name>は、お使いのアプリケーションの名前の接頭辞が付いた最新の Pod の名前になります。oc logs -f <pod_name>
1.6.2. S2I を使用して Red Hat build of Quarkus アプリケーションを Java 21 を使用する OpenShift Container Platform にデプロイする リンクのコピーリンクがクリップボードにコピーされました!
Source-to-Image (S2I) メソッドを使用して、Java 21 で実行されている Red Hat build of Quarkus アプリケーションを OpenShift Container Platform にデプロイできます。
前提条件
- Java 21 でビルドされた Quarkus アプリケーションがある。Java 21 アプリケーションの詳細は、S2I を使用して Red Hat build of Quarkus アプリケーションを Java 21 を使用する OpenShift Container Platform にデプロイする を参照してください。
-
(オプション):
quarkus-openshiftエクステンションが含まれる Quarkus Maven プロジェクトがある。 - 必要な OpenShift Container Platform プロジェクトに切り替える で説明されているとおり、正しい OpenShift Container Platform プロジェクト namespace で作業している。
- Quarkus Maven プロジェクトは Git リポジトリーでホストされている。
手順
pom.xmlファイルを開き、次のように Java 設定をバージョン 21 に変更します。<maven.compiler.source>21</maven.compiler.source> <maven.compiler.target>21</maven.compiler.target>次のコマンドを入力して、Java 21 アプリケーションをパッケージ化します。
./mvnw clean package-
pom.xmlファイルと同じレベルに、.s2iというディレクトリーを作成します。 .s2iディレクトリーにenvironmentという名前のファイルを作成し、以下の内容を追加します。MAVEN_S2I_ARTIFACT_DIRS=target/quarkus-app S2I_SOURCE_DEPLOYMENTS_FILTER=app lib quarkus quarkus-run.jar JAVA_OPTIONS=-Dquarkus.http.host=0.0.0.0 AB_JOLOKIA_OFF=true JAVA_APP_JAR=/deployments/quarkus-run.jar- 変更をリモート Git リポジトリーにコミットし、プッシュします。
次のコマンドを入力して、サポートされている OpenShift Container Platform イメージをインポートします。
oc import-image ubi8/openjdk-21 --from=registry.access.redhat.com/ubi8/openjdk-21 --confirm注記- OpenShift イメージレジストリーを使用し、同じプロジェクト内のイメージストリームからプルしている場合、Pod サービスアカウントにはすでに正しい権限が付与されているはずです。
他の OpenShift Container Platform プロジェクトまたは保護されたレジストリーからイメージをプルする場合は、追加の設定手順が必要になることもあります。
詳細は、Red Hat OpenShift Container Platform のドキュメントで イメージプルシークレットの使用 を参照してください。
-
IBM Z インフラストラクチャーにデプロイする場合は、代わりに
oc import-image ubi8/openjdk-21 --from=registry.redhat.io/ubi8/openjdk-21 --confirmを入力します。このイメージの詳細は、Red Hat build of OpenJDK 21 ページを参照してください。
次のコマンドを入力して、プロジェクトのビルド、アプリケーションの作成、OpenShift Container Platform サービスのデプロイを実行します。
oc new-app registry.access.redhat.com/ubi8/openjdk-21~<git_path> --name=<project_name>ここでは、以下のようになります。
<git_path> は、Quarkus プロジェクトをホストする Git リポジトリーへのパスです。たとえば、
oc new-app registry.access.redhat.com/ubi8/openjdk-21~https://github.com/johndoe/code-with-quarkus.git --name=code-with-quarkusです。Git リポジトリー用に SSH キーを設定していない場合は、Git パスを指定する際に、SSH URL の代わりに HTTPS URL を使用します。
<project_name> はアプリケーションの名前です。
注記IBM Z インフラストラクチャー上にデプロイする場合は、代わりに
oc new-app ubi8/openjdk-21~<git_path> --name=<project_name>と入力します。
プロジェクトの更新バージョンをデプロイするには、更新を Git リポジトリーにプッシュしてから、以下のコマンドを入力します。
oc start-build <project_name>次のコマンドを入力して、ルートを Quarkus アプリケーションに公開します。
oc expose svc <project_name>
検証
次の子アンドを入力して、Pod のリストを表示します。
oc get pods次のコマンドを入力して、アプリケーションの Pod のログ出力を取得します。
oc logs -f <pod_name>