第1章 OpenShift エクステンションを使用した Serverless Quarkus Java アプリケーションの OpenShift へのデプロイ
従来の Source-to-Image (S2I) ソースワークフローは、OpenShift 内でアプリケーションのデプロイ可能なアーティファクトを生成します。Quarkus OpenShift エクステンションは、S2I バイナリーワークフローを使用して、より効率的なデプロイメントプロセスを提供します。ソースからビルドする代わりに、エクステンションはローカルファイルシステムから JAR ファイルをアップロードします。その結果、ビルドプロセスは従来の S2I 手法よりも最大で 10 倍速くなります。ローカルで開発する場合、およびビルドサーバーまたは継続的インテグレーション (CI) システムから開発する場合に、Quarkus OpenShift エクステンションを使用して、ソースから繰り返し可能なビルドを実行することができます。
以下の手順では、Quarkus OpenShift エクステンションを使用して、Serverless Quarkus Java アプリケーションを OpenShift にデプロイする方法を説明しています。
前提条件
- Quarkus Maven プロジェクトがあること。
- OpenShift Serverless Operator がインストールされていること。
- OpenShift Knative Serving がインストールされていること。
- Red Hat OpenShift Container Platform クラスターにアクセスでき、最新バージョンの OpenShift CLI (oc) がインストールされていること。
-
OpenJDK 11 がインストールされ、
JAVA_HOME環境変数が Java SDK の場所を指定していること。 - Apache Maven 3.6.2 以降がインストールされていること。Maven は Apache Maven Project の Web サイトから入手できます。
- ネイティブコンパイルの場合は、Podman または Docker などのコンテナー環境が必要。
-
knCLI ツールがインストールされていること。
手順
- Quarkus プロジェクトが含まれるディレクトリーに移動します。
OpenShift エクステンションを既存プロジェクトに追加します。
./mvnw quarkus:add-extension -Dextensions="openshift"
./mvnw quarkus:add-extension -Dextensions="openshift"Copy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift エクステンションを追加すると、スクリプトは以下の依存関係を
pom.xmlファイルに追加します。<dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-openshift</artifactId> </dependency>
<dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-openshift</artifactId> </dependency>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 開発またはテスト環境内で、信頼されていない証明書を使用している場合は、以下の行を
src/main/resources/application.propertiesファイルに追加します。quarkus.kubernetes-client.trust-certs=true
quarkus.kubernetes-client.trust-certs=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow Open JDK 11 の Red Hat Enterprise Linux 8 イメージを使用するように OpenShift を設定するには、以下の行を
application.propertiesファイルに追加します。quarkus.s2i.base-jvm-image=registry.access.redhat.com/ubi8/openjdk-11
quarkus.s2i.base-jvm-image=registry.access.redhat.com/ubi8/openjdk-11Copy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift の内部レジストリーからコンテナーイメージをプルするように OpenShift Serverless を設定するには、以下の行を
application.propertiesファイルに追加します。quarkus.container-image.registry=image-registry.openshift-image-registry.svc:5000
quarkus.container-image.registry=image-registry.openshift-image-registry.svc:5000Copy to Clipboard Copied! Toggle word wrap Toggle overflow Knative Serving のデプロイメント記述子を作成できるようにするには、以下の行を
application.propertiesファイルに追加します。quarkus.kubernetes.deployment-target=knative
quarkus.kubernetes.deployment-target=knativeCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
変更を
application.propertiesファイルに保存します。 OpenShift CLI (oc) にログインします。
oc login
oc loginCopy to Clipboard Copied! Toggle word wrap Toggle overflow 新しい OpenShift プロジェクトを作成するには、以下のコマンドを実行します。このコマンドの
<project_name>は、新規プロジェクトの名前に置き換えます。oc new-project <project_name>
oc new-project <project_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記<project_name>は、ホストシステムのusernameと同じである必要があります。同じでない場合、Quarkus はイメージレジストリーからイメージをプルできません。別の<project_name>を設定する場合は、以下の行をapplication.propertiesファイルに必ず追加します。quarkus.container-image.group=<project_name>
quarkus.container-image.group=<project_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow プロジェクトを OpenShift にデプロイするには、以下のコマンドを入力します。
./mvnw clean package -Dquarkus.kubernetes.deploy=true
./mvnw clean package -Dquarkus.kubernetes.deploy=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow アプリケーションが正常にデプロイされたことを確認するには、以下のコマンドを実行します。
kn service list
kn service listCopy to Clipboard Copied! Toggle word wrap Toggle overflow アプリケーションの完全な URL を表示するには、以下のコマンドを入力します。ここで、
<application_name>は OpenShift プロジェクトにデプロイされたアプリケーションの名前に置き換えます。kn route describe <application_name> -o jsonpath='{.status.url}'kn route describe <application_name> -o jsonpath='{.status.url}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow