第3章 Quarkus OpenShift エクステンションを使用した OpenShift への Quarkus アプリケーションのデプロイ

従来の Source-to-Image (S2I) ソースワークフローは、OpenShift 内でアプリケーションのデプロイ可能なアーティファクトを生成します。Quarkus OpenShift エクステンションは、S2I バイナリーワークフローを使用して、より効率的なデプロイメントプロセスを提供します。ソースからビルドする代わりに、エクステンションはローカルファイルシステムから JAR ファイルをアップロードします。その結果、ビルドプロセスは従来の S2I 手法よりも最大で 10 倍速くなります。ローカルで開発する場合、およびビルドサーバーまたは継続的インテグレーション (CI) システムから開発する場合に、Quarkus OpenShift エクステンションを使用して、ソースから繰り返し可能なビルドを実行することができます。

注記

Quarkus OpenShift エクステンションは、開発およびテストの目的でのみ使用してください。実稼働環境では、「4章S2I を使用した OpenShift での Quarkus アプリケーションのデプロイ」で説明されている従来の S2I 手法の使用を検討してください。

手順

  1. Quarkus Maven プロジェクトが含まれるディレクトリーに移動します。
  2. OpenShift エクステンションを既存プロジェクトに追加するには、以下のコマンドを入力します。

    ./mvnw quarkus:add-extension -Dextensions="openshift"
    注記

    新規プロジェクトの作成時に -Dextensions="openshift" 引数を含めて、Quarkus OpenShift エクステンションを追加することができます。

    OpenShift エクステンションを追加すると、スクリプトは以下の依存関係を pom.xml ファイルに追加します。

       <dependency>
         <groupId>io.quarkus</groupId>
         <artifactId>quarkus-openshift</artifactId>
       </dependency>
  3. 信頼されていない証明書を使用している場合は、src/main/resources/application.properties ファイルに以下の行を追加します。

    quarkus.kubernetes-client.trust-certs=true
  4. Open JDK 11 の Red Hat Enterprise Linux 7 イメージを使用するように OpenShift を設定するには、以下の行を application.properties ファイルに追加します。

    quarkus.s2i.base-jvm-image=registry.access.redhat.com/openjdk/openjdk-11-rhel7
    注記

    IBM Z インフラストラクチャーにデプロイする場合は、application.properties ファイルに quarkus.s2i.base-jvm-image=registry.access.redhat.com/openj9/openj9-11-rhel8 を追加します。

  5. OpenShift ルートを作成するには、以下の行を application.properties ファイルに追加します。

    quarkus.openshift.expose=true
  6. 変更を application.properties ファイルに保存します。
  7. OpenShift CLI (oc) にログインします。

    oc login
  8. 新しい OpenShift プロジェクトを作成するには、以下のコマンドを実行します。このコマンドの PROJECT_NAME は、新規プロジェクトの名前に置き換えます。

    oc new-project PROJECT_NAME
  9. プロジェクトを OpenShift にデプロイするには、Quarkus Maven プロジェクトディレクトリーに以下のコマンドを入力します。

    ./mvnw clean package -Dquarkus.kubernetes.deploy=true
  10. OpenShift プロジェクトでデプロイされたすべてのアプリケーションの名前およびルートを表示するには、以下のコマンドを入力します。

    oc get route
  11. アプリケーションの完全な URL を表示するには、以下のコマンドを入力します。ここで、APPLICATION_NAME は OpenShift プロジェクトにデプロイされたアプリケーションの名前になります。

    export URL="http://$(oc get route APPLICATION_NAME -o jsonpath='{.spec.host}')"
    echo "Application URL: $URL"
    curl $URL/hello
  12. ルートの hello エンドポイントに HTTP 要求を作成するには、以下のコマンドを入力します。

    curl $URL/hello