The English version of quarkus.io is the official project site. Translated sites are community supported on a best-effort basis.
このページを編集

S2Iを使用したQuarkusアプリケーションのOpenShiftへのデプロイ

Quarkus のアプリケーションを OpenShift にデプロイするには、Source-to-Image (S2I) メソッドを使用します。S2Iでは、Gitリポジトリを通して、あるいはビルド時にソースコードをアップロードして、ビルドコンテナにソースコードを提供する必要があります。

デプロイ手順は、Quarkus アプリケーションが使用する Java バージョンによって異なります。

Java 17 で Quarkus アプリケーションを OpenShift にデプロイします。

Java 17 を実行する Quarkus アプリケーションを OpenShift にデプロイするには、S2Iメソッドを使用します。

前提条件

  • Java {jdk-ver-other} で構築されたQuarkusアプリケーションがあること

  • オプション:Quarkusプロジェクトに quarkus-openshift エクステンションが含まれていること

  • 正しい OpenShift プロジェクトの名前空間で作業していること

  • プロジェクトがGitリポジトリにホストされていること

手順

  1. pom.xml を開き、Javaのバージョンを 17 に設定してください:

    <maven.compiler.source>17</maven.compiler.source>
    <maven.compiler.target>17</maven.compiler.target>
  2. 以下のコマンドを入力して、Java 17アプリケーションをパッケージ化します:

    ./mvnw clean package
  3. pom.xml ファイルと同じ階層に .s2i というディレクトリを作成します。

  4. .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
  5. 変更をコミットして、リモートの Git リポジトリにプッシュします。

  6. 次のコマンドを入力して、サポートされている OpenShift イメージをインポートします:

    oc import-image ubi9/openjdk-17 --from=registry.access.redhat.com/ubi9/openjdk-17 --confirm
    • OpenShiftのイメージレジストリを使用し、同じプロジェクト内のイメージストリームからプルしている場合、ポッドのサービスアカウントはすでに正しいパーミッションを持っている必要があります。

    • 他の OpenShift プロジェクトや保護されたレジストリからイメージを引っ張ってくる場合は、追加の設定手順が必要になるかもしれません。

    詳細は、 Red Hat Openshift Container Platform のドキュメントを参照してください。

  7. プロジェクトをビルドし、アプリケーションを作成し、 OpenShift サービスをデプロイします:

    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/ubi9/openjdk-17~https://github.com/johndoe/code-with-quarkus.git --name=code-with-quarkus です。

      Git リポジトリに SSH 鍵を設定していない場合は、Git のパスを指定する際に SSH URL ではなく HTTPS URL を使ってください。

    • <project_name> をアプリケーション名に置き換えてください。

  8. プロジェクトの更新版をデプロイするには、変更をGitリポジトリにプッシュしてから実行します:

    oc start-build <project_name>
  9. アプリケーションへのルートを公開するには、以下のコマンドを実行します:

    oc expose svc <project_name>

検証

  1. 現在の OpenShift プロジェクトに関連するポッドを一覧表示します:

    oc get pods
  2. アプリケーションのポッドのログ出力を取得するには、次のコマンドを実行します。 <pod_name> を最新のポッドの名前に置き換え、その前にアプリケーション名を付けます:

    oc logs -f <pod_name>

Javaの 21 で Quarkus アプリケーションを OpenShift にデプロイします。

Java 21 を実行する Quarkus アプリケーションを OpenShift にデプロイするには、S2Iメソッドを使用します。

前提条件

  • オプション:Quarkus Mavenプロジェクトに quarkus-openshift エクステンションが含まれていること

  • 正しい OpenShift プロジェクトの名前空間で作業していること

  • プロジェクトがGitリポジトリにホストされていること

手順

  1. pom.xml 、Javaのバージョンを21に設定します:

    <maven.compiler.source>21</maven.compiler.source>
    <maven.compiler.target>21</maven.compiler.target>
  2. 以下のコマンドを入力して、Java {jdk-ver-latest} アプリケーションをパッケージ化します:

    ./mvnw clean package
  3. pom.xml ファイルと同じ階層に .s2i というディレクトリを作成します。

  4. .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
  5. 変更をコミットして、リモートの Git リポジトリにプッシュします。

  6. 次のコマンドを入力して、サポートされている OpenShift イメージをインポートします:

    oc import-image ubi9/openjdk-21 --from=registry.access.redhat.com/ubi9/openjdk-21 --confirm
    • OpenShiftのイメージレジストリを使用し、同じプロジェクト内のイメージストリームからプルしている場合、ポッドのサービスアカウントはすでに正しいパーミッションを持っている必要があります。

    • 他の OpenShift プロジェクトにまたがるイメージや、保護されたレジストリからイメージをプルする場合は、追加の設定手順が必要になる場合があります。 詳細については、 Red Hat Openshift Container Platform のドキュメントを参照してください。

    • IBM Zインフラストラクチャにデプロイする場合は、代わりに oc import-image ubi9/openjdk-21 --from=registry.redhat.io/ubi9/openjdk-21 --confirm を実行してください。 このイメージについては、 {runtimes-openjdk-long} 21 を参照してください。

  7. プロジェクトをビルドし、アプリケーションを作成し、OpenShiftサービスをデプロイするには、以下のコマンドを入力します:

    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/ubi9/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 ubi9/openjdk-21~<git_path> --name=<project_name> を入力してください。

  8. プロジェクトの更新版をデプロイするには、変更をGitリポジトリにプッシュしてから実行します:

    oc start-build <project_name>
  9. アプリケーションへのルートを公開するには、以下のコマンドを実行します:

    oc expose svc <project_name>

検証

  1. 現在の OpenShift プロジェクトに関連するポッドを一覧表示します:

    oc get pods
  2. アプリケーションのポッドのログ出力を取得するには、次のコマンドを実行します。 <pod_name> を最新のポッドの名前に置き換え、その前にアプリケーション名を付けます:

    oc logs -f <pod_name>