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 11 アプリケーションの詳細は、S2I を使用して Red Hat build of Quarkus アプリケーションを Java 11 を使用する 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>
<maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Java 17 アプリケーションをパッケージ化するには、次のコマンドを入力します。
./mvnw clean package
./mvnw clean packageCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
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
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.jarCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更をリモート Git リポジトリーにコミットし、プッシュします。
次のコマンドを入力して、サポートされている OpenShift Container Platform イメージをインポートします。
oc import-image ubi8/openjdk-17 --from=registry.access.redhat.com/ubi8/openjdk-17 --confirm
oc import-image ubi8/openjdk-17 --from=registry.access.redhat.com/ubi8/openjdk-17 --confirmCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記- 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>
oc new-app registry.access.redhat.com/ubi8/openjdk-17~<git_path> --name=<project_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
<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>
oc start-build <project_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、ルートを Quarkus アプリケーションに公開します。
oc expose svc <project_name>
oc expose svc <project_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
次のコマンドを入力して、現在の OpenShift プロジェクトに関連付けられている Pod のリストを表示します。
oc get pods
oc get podsCopy to Clipboard Copied! Toggle word wrap Toggle overflow アプリケーションの Pod のログ出力を取得するには、以下のコマンドを入力します。
<pod_name>は、お使いのアプリケーションの名前の接頭辞が付いた最新の Pod の名前になります。oc logs -f <pod_name>
oc logs -f <pod_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.6.2. S2I を使用して Red Hat build of Quarkus アプリケーションを Java 11 を使用する OpenShift Container Platform にデプロイする リンクのコピーリンクがクリップボードにコピーされました!
Source-to-Image (S2I) メソッドを使用して、Java 11 で実行されている Red Hat build of Quarkus アプリケーションを OpenShift Container Platform にデプロイできます。
前提条件
- Java 11 でビルドされた Quarkus アプリケーションがある。Java 17 アプリケーションの詳細は、S2I を使用して Red Hat build of Quarkus アプリケーションを Java 17 を使用する OpenShift Container Platform にデプロイする を参照してください。
-
(オプション):
quarkus-openshiftエクステンションが含まれる Quarkus Maven プロジェクトがある。 - 必要な OpenShift Container Platform プロジェクトに切り替える で説明されているとおり、正しい OpenShift Container Platform プロジェクト namespace で作業している。
- Quarkus Maven プロジェクトは Git リポジトリーでホストされている。
手順
pom.xmlファイルを開き、次のように Java 設定をバージョン 11 に変更します。<maven.compiler.source>11</maven.compiler.source> <maven.compiler.target>11</maven.compiler.target>
<maven.compiler.source>11</maven.compiler.source> <maven.compiler.target>11</maven.compiler.target>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Java 11 アプリケーションをパッケージ化するには、次のコマンドを入力します。
./mvnw clean package
./mvnw clean packageCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
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
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.jarCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更をリモート Git リポジトリーにコミットし、プッシュします。
次のコマンドを入力して、サポートされている OpenShift Container Platform イメージをインポートします。
oc import-image ubi8/openjdk-11 --from=registry.access.redhat.com/ubi8/openjdk-11 --confirm
oc import-image ubi8/openjdk-11 --from=registry.access.redhat.com/ubi8/openjdk-11 --confirmCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記- OpenShift イメージレジストリーを使用し、同じプロジェクト内のイメージストリームからプルしている場合、Pod サービスアカウントにはすでに正しい権限が付与されているはずです。
他の OpenShift Container Platform プロジェクトまたは保護されたレジストリーからイメージをプルする場合は、追加の設定手順が必要になることもあります。
詳細は、Red Hat OpenShift Container Platform のドキュメントで イメージプルシークレットの使用 を参照してください。
-
IBM Z インフラストラクチャーにデプロイする場合は、代わりに
oc import-image ubi8/openjdk-11 --from=registry.redhat.io/ubi8/openjdk-11 --confirmを入力します。このイメージの詳細は、Red Hat build of OpenJDK 11 ページを参照してください。
次のコマンドを入力して、プロジェクトのビルド、アプリケーションの作成、OpenShift Container Platform サービスのデプロイを実行します。
oc new-app registry.access.redhat.com/ubi8/openjdk-11~<git_path> --name=<project_name>
oc new-app registry.access.redhat.com/ubi8/openjdk-11~<git_path> --name=<project_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
<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> はアプリケーションの名前です。
注記IBM Z インフラストラクチャー上にデプロイする場合は、代わりに
oc new-app ubi8/openjdk-11~<git_path> --name=<project_name>と入力します。
プロジェクトの更新バージョンをデプロイするには、更新を Git リポジトリーにプッシュしてから、以下のコマンドを入力します。
oc start-build <project_name>
oc start-build <project_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、ルートを Quarkus アプリケーションに公開します。
oc expose svc <project_name>
oc expose svc <project_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
次の子アンドを入力して、Pod のリストを表示します。
oc get pods
oc get podsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、アプリケーションの Pod のログ出力を取得します。
oc logs -f <pod_name>
oc logs -f <pod_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow