第4章 S2I を使用して Red Hat build of Quarkus アプリケーションを OpenShift Container Platform にデプロイする
Source-to-Image (S2I) メソッドを使用して、Red Hat build of Quarkus アプリケーションを OpenShift Container Platform にデプロイできます。S2I では、Git リポジトリーを使用するか、ビルド時にソースをアップロードして、ソースコードをビルドコンテナーに提供する必要があります。
デプロイメント手順は、Red Hat build of Quarkus アプリケーションで使用される Java バージョンによって異なります。
4.1. Java 17 で Red Hat build of Quarkus アプリケーションを OpenShift Container Platform にデプロイする
S2I 方式を使用して、Java 17 を実行する Red Hat build of Quarkus アプリケーションを OpenShift Container Platform にデプロイできます。
4.1.1. 前提条件
- Java 17 でビルドされた Quarkus アプリケーションがある。
-
オプション:
quarkus-openshift
エクステンションが含まれる Quarkus Maven プロジェクトがある。 - 正しい OpenShift プロジェクト名前空間で作業しています。
- プロジェクトは Git リポジトリーでホストされます。
4.1.2. 手順
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 ubi9/openjdk-17 --from=registry.access.redhat.com/ubi9/openjdk-17 --confirm
注記- OpenShift イメージレジストリーを使用し、同じプロジェクト内のイメージストリームからプルしている場合は、Pod サービスアカウントにすでに正しい権限が付与されているはずです。
- 他の OpenShift Container Platform プロジェクトまたは保護されたレジストリーからイメージをプルする場合は、追加の設定手順が必要になることもあります。
詳細は、Red Hat OpenShift Container Platform の ドキュメントを参照してください。
プロジェクトをビルドし、アプリケーションを作成し、OpenShift Container Platform サービスをデプロイします。
oc new-app registry.access.redhat.com/ubi9/openjdk-17~<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> を
アプリケーションの名前に置き換えます。
プロジェクトの更新バージョンをデプロイするには、変更を Git リポジトリーにプッシュしてから、次のコマンドを実行します。
oc start-build <project_name>
アプリケーションにルートを公開するには、次のコマンドを実行します。
oc expose svc <project_name>
4.1.3. 検証
現在の OpenShift Container Platform プロジェクトに関連付けられている Pod をリスト表示します。
oc get pods
アプリケーションの Pod のログ出力を取得するには、次のコマンドを実行し、
<pod_name> を
アプリケーション名の前に付けた最新の Pod の名前に置き換えます。oc logs -f <pod_name>