第5章 OpenShift Serverless サービスとしての Quarkus アプリケーションのデプロイ
Docker ビルドストラテジーを使用して、Quarkus アプリケーションを OpenShift Serverless にデプロイできます。OpenShift Serverless Knative Serving を使用することで、読み込むサイズに応じてサービスをスケールアップまたはスケールダウンできます。現在リクエストされていないサービスをスケールダウンすることで、メモリー機能を向上できます。
Quarkus プロジェクトには、事前に生成された Dockerfile と手順が含まれています。カスタム Dockerfile を使用する場合は、src/main/docker ディレクトリー、またはモジュール内の任意の場所にファイルを追加する必要があります。さらに、JVM モードの quarkus.openshift.jvm-dockerfile プロパティーおよびネイティブモードの quarkus.openshift.native-dockerfile プロパティーを使用して、Dockerfile へのパスを設定する必要があります。
以下の手順では、Quarkus OpenShift エクステンションを使用して、Serverless Quarkus Java アプリケーションまたはネイティブ実行可能ファイルにコンパイルされた Serverless アプリケーションをデプロイする方法を説明します。
前提条件
-
quarkus-openshiftエクステンションが含まれる Quarkus Maven プロジェクトがある。 ocを使用して OpenShift にログインし、プロジェクトを選択している。- OpenShift プロジェクトの namespace を確認するには、OpenShift プロジェクトの namespace の確認 を参照してください。
- OpenShift Serverless Operator がインストールされている。
- OpenShift Knative Serving がインストールされ、確認されている。詳細は、Knative Serving のインストール を参照してください。
- ネイティブコンパイルの場合は、Podman や Docker などの Linux X86_64 オペレーティングシステムまたは OCI (Open Container Initiative) と互換性のあるコンテナーランタイムが必要です。
手順
- Quarkus プロジェクトが含まれるディレクトリーに移動します。
application.propertiesファイルで以下のプロパティーを設定します。Knative をデプロイメントターゲットとして設定します。
quarkus.kubernetes.deployment-target=knative
quarkus.kubernetes.deployment-target=knativeCopy to Clipboard Copied! Toggle word wrap Toggle overflow Docker ビルドストラテジーを設定します。
quarkus.openshift.build-strategy=docker
quarkus.openshift.build-strategy=dockerCopy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift 内部レジストリーからコンテナーイメージをプルするように OpenShift Serverless に指示します。
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 注記OpenShift
<project_name>がホストシステムのusernameと異なる場合は、コンテナーイメージのグループを設定します。設定しない場合は、Quarkus はイメージレジストリーからイメージをプルできません。quarkus.container-image.group=<project_name>
quarkus.container-image.group=<project_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow (オプション) 信頼されていない証明書を使用している場合は、
KubernetesClientを設定します。quarkus.kubernetes-client.trust-certs=true
quarkus.kubernetes-client.trust-certs=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow (オプション) サービスを公開して OpenShift ルートを作成します。
quarkus.openshift.expose=true
quarkus.openshift.expose=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow (オプション) カスタム Dockerfile へのパスを設定します。
quarkus.openshift.jvm-dockerfile=<path_to_your_dockerfile>
quarkus.openshift.jvm-dockerfile=<path_to_your_dockerfile>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の例は、
Dockerfile.custom-jvmへのパスを示しています。quarkus.openshift.jvm-dockerfile=src/main/resources/Dockerfile.custom-jvm
quarkus.openshift.jvm-dockerfile=src/main/resources/Dockerfile.custom-jvmCopy to Clipboard Copied! Toggle word wrap Toggle overflow
(オプション) ネイティブ実行可能ファイルにコンパイルされた Serverless アプリケーションをデプロイするには、以下のプロパティーを設定する必要があります。
コンテナーランタイムを設定します。
quarkus.native.container-build=true
quarkus.native.container-build=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow コンテナーエンジンを指定します。
Podman を使用してネイティブ実行可能ファイルをビルドします。
quarkus.native.container-runtime=podman
quarkus.native.container-runtime=podmanCopy to Clipboard Copied! Toggle word wrap Toggle overflow Docker を使用してネイティブ実行可能ファイルをビルドします。
quarkus.native.container-runtime=docker
quarkus.native.container-runtime=dockerCopy to Clipboard Copied! Toggle word wrap Toggle overflow
(オプション) カスタム Dockerfile へのパスを設定します。
quarkus.openshift.native-dockerfile=<path_to_your_dockerfile>
quarkus.openshift.native-dockerfile=<path_to_your_dockerfile>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
以下のオプションのいずれかを使用して、Serverless アプリケーションをパッケージ化して OpenShift にデプロイします。
Quarkus Java アプリケーションをデプロイします。
./mvnw clean package -Dquarkus.kubernetes.deploy=true
./mvnw clean package -Dquarkus.kubernetes.deploy=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow Quarkus ネイティブアプリケーションをデプロイします。
./mvnw clean package -Pnative -Dquarkus.kubernetes.deploy=true
./mvnw clean package -Pnative -Dquarkus.kubernetes.deploy=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
現在の OpenShift プロジェクトに関連付けられている Pod のリストを表示します。
oc get pods
oc get podsCopy to Clipboard Copied! Toggle word wrap Toggle overflow アプリケーションの Pod のログ出力を取得するには、以下のコマンドを入力します。
<pod_name>は、お使いのアプリケーションの名前の接頭辞が付いた最新の Pod の名前になります。oc logs -f <pod_name>
oc logs -f <pod_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow