第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 手法の使用を検討してください。
手順
- Quarkus Maven プロジェクトが含まれるディレクトリーに移動します。
OpenShift エクステンションを既存プロジェクトに追加するには、以下のコマンドを入力します。
./mvnw quarkus:add-extension -Dextensions="openshift"
注記新規プロジェクトの作成時に
-Dextensions="openshift"
引数を含めて、Quarkus OpenShift エクステンションを追加することができます。OpenShift エクステンションを追加すると、スクリプトは以下の依存関係を
pom.xml
ファイルに追加します。<dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-openshift</artifactId> </dependency>
信頼されていない証明書を使用している場合は、
src/main/resources/application.properties
ファイルに以下の行を追加します。quarkus.kubernetes-client.trust-certs=true
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
を追加します。OpenShift ルートを作成するには、以下の行を
application.properties
ファイルに追加します。quarkus.openshift.expose=true
-
変更を
application.properties
ファイルに保存します。 OpenShift CLI (oc) にログインします。
oc login
新しい OpenShift プロジェクトを作成するには、以下のコマンドを実行します。このコマンドの
PROJECT_NAME
は、新規プロジェクトの名前に置き換えます。oc new-project PROJECT_NAME
プロジェクトを OpenShift にデプロイするには、Quarkus Maven プロジェクトディレクトリーに以下のコマンドを入力します。
./mvnw clean package -Dquarkus.kubernetes.deploy=true
OpenShift プロジェクトでデプロイされたすべてのアプリケーションの名前およびルートを表示するには、以下のコマンドを入力します。
oc get route
アプリケーションの完全な URL を表示するには、以下のコマンドを入力します。ここで、
APPLICATION_NAME
は OpenShift プロジェクトにデプロイされたアプリケーションの名前になります。export URL="http://$(oc get route APPLICATION_NAME -o jsonpath='{.spec.host}')" echo "Application URL: $URL" curl $URL/hello
ルートの
hello
エンドポイントに HTTP 要求を作成するには、以下のコマンドを入力します。curl $URL/hello