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

Dockerビルドストラテジーを使用して、Quarkus JavaアプリケーションをOpenShiftにデプロイ

アプリケーション開発者として、デプロイオプションとしてDockerビルドストラテジーを使用することで、アプリケーションを OpenShift にデプロイすることができます。

この仕組みは OpenShift クラスタの外、ローカルまたはCI環境でアーティファクトをビルドし、Dockerfileと共にOpenShiftビルドシステムに提供します。アーティファクトにはJARファイルやネイティブ実行ファイルが含まれます。 OpenShift クラスタはコンテナをビルドし、イメージストリームとして提供します。

この機能は quarkus-openshift エクステンションモジュールによって提供されています。カスタムDockerfileを使用したい場合は、 src/main/docker ディレクトリまたはモジュール内の任意の場所にファイルを追加してください。 さらに、 quarkus.openshift.jvm-dockerfile プロパティを使用して、Dockerfile へのパスを設定します。

前提条件

  • OpenJDK 17 or 21 がインストールされていること

  • 環境変数 JAVA_HOME をJava SDKの場所に設定していること

  • Apache Maven 3.9.9がインストールされていること

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

  • OpenShift クラスタにアクセスでき、 oc CLIツールの最新互換バージョンがインストールされていること

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

手順

  1. application.properties 設定ファイルで Docker ビルドストラテジーを設定します:

    quarkus.openshift.build-strategy=docker
  2. オプション:ご使用の環境に応じて、 application.properties ファイルに以下のプロパティを設定してください:

    • 信頼されていない証明書を使用している場合は、 KubernetesClient の証明書の信頼を有効にします:

      quarkus.kubernetes-client.trust-certs=true
    • サービスを公開し、 OpenShift ルートを作成するには、以下のプロパティを設定します:

      quarkus.openshift.route.expose=true
    • 事前生成済のDockerfileの代わりにカスタムDockerfileを使用するには、Dockerfileへのパスを設定します:

      quarkus.openshift.jvm-dockerfile=<path_to_your_dockerfile>

      例えば、 Dockerfile.custom-jvm というカスタムDockerfileを指定するには、以下のようにします:

      quarkus.openshift.jvm-dockerfile=src/main/resources/Dockerfile.custom-jvm
  3. アプリケーションをパッケージ化し、現在の OpenShift プロジェクトにデプロイします:

    ./mvnw clean package -Dquarkus.openshift.deploy=true

検証

以下の検証ステップでは、 openshift-helloworld サンプル・アプリケーションを使用します。

  1. 現在の OpenShift プロジェクトに関連付けられたポッドのリストを表示します:

    oc get pods
    NAME                            READY   STATUS      RESTARTS   AGE
    openshift-helloworld-1-build    0/1     Completed   0          11m
    openshift-helloworld-1-deploy   0/1     Completed   0          10m
    openshift-helloworld-1-gzzrx    1/1     Running     0          10m
  2. アプリケーションのポッドのログ出力を取得するには、 oc logs -f コマンドにポッド名を指定します。次の例では、 openshift-helloworld-1-gzzrx というポッド名を使用しています。これは、アプリケーションの名前の前に最新のポッドを付けたものです:

    oc logs -f openshift-helloworld-1-gzzrx
    Starting the Java application using /opt/jboss/container/java/run/run-java.sh ...
    INFO exec -a "java" java -Dquarkus.http.host=0.0.0.0 -Djava.util.logging.manager=org.jboss.logmanager.LogManager -XX:MaxRAMPercentage=50.0 -XX:+UseParallelGC -XX:MinHeapFreeRatio=10 -XX:MaxHeapFreeRatio=20 -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -XX:+ExitOnOutOfMemoryError -cp "." -jar /deployments/quarkus-run.jar
    __  ____  __  _____   ___  __ ____  ______
    --/ __ \/ / / / _ | / _ \/ //_/ / / / __/
    -/ /_/ / /_/ / __ |/ , _/ ,< / /_/ /\ \
    --\___\_\____/_/ |_/_/|_/_/|_|\____/___/
    2024-09-17 10:23:25,254 INFO  [io.quarkus] (main) getting-started 1.0.0-SNAPSHOT on JVM (powered by Quarkus {QuarkusCore}) started in 0.653s. Listening on: http://0.0.0.0:8080
    2024-09-17 10:23:25,281 INFO  [io.quarkus] (main) Profile prod activated.
    2024-09-17 10:23:25,281 INFO  [io.quarkus] (main) Installed features: [cdi, kubernetes, rest, smallrye-context-propagation, vertx]
  3. サービス一覧

    oc get svc
    NAME                   TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                               AGE
    openshift-helloworld   ClusterIP   172.30.64.57     <none>        80/TCP                                14m
  4. アプリケーションをテストするための URL を取得します。 そのためには、アプリケーションをビルドする前に application.properties ファイルで quarkus.openshift.route.expose=true プロパティを設定し、OpenShift ルートを公開しているようにしてください。

    oc get routes
    NAME                   HOST/PORT                                                                   PATH   SERVICES               PORT   TERMINATION   WILDCARD
    openshift-helloworld   openshift-helloworld-username-dev.apps.sandbox-m2.ll9k.p1.openshiftapps.com          openshift-helloworld   http                 None

    ルートは80番ポートをリッスンするようになり、8080番ポートではなくなったことに注意してください。

    curl と、 oc get routes から出力された完全なURL、つまり "http://openshift-helloworld-username-dev.apps.sandbox-m2.ll9k.p1.openshiftapps.com "を使って、ウェブブラウザやターミナルでこの例で示したアプリケーションをテストすることができます。

関連コンテンツ