第5章 OpenShift Serverless サービスとしてネイティブ実行可能ファイルにコンパイルされた Quarkus アプリケーションのデプロイ
アプリケーション開発者は、OpenShift Serverless Knative Serving を使用して、ネイティブ実行可能ファイルにコンパイルされた Quarkus アプリケーションを Red Hat OpenShift Container Platform にデプロイできます。
OpenShift Serverless Knative Serving を使用することで、読み込むサイズに応じてサービスをスケールアップまたはスケールダウンすることができます。現在リクエストされていないサービスをスケールダウンすることで、メモリー機能を向上させることができます。
Quarkus をネイティブ実行可能ファイルとして、または OpenJDK を使用する Java アプリケーションとして実行することができます。ネイティブ実行可能ファイルの場合は、Red Hat UBI 8 minimal イメージを使用します。OpenJDK の場合は、Red Hat 8 UBI Java イメージを使用します。
5.1. サーバーレスアプリケーションとして、継続的インテグレーションで Quarkus ネイティブアプリケーションのコンテナーイメージをデプロイします。
ネイティブサーバーレスアプリケーションをデプロイする場合は、ネイティブビルド、コンテナービルド、およびデプロイメントの手順を別々にすることができます。以下の手順では、サーバーレスアプリケーションとして継続的インテグレーション (CI) で Quarkus ネイティブアプリケーションのコンテナーイメージをデプロイする方法を説明しています。
前提条件
- OpenShift Serverless Operator がインストールされていること。
- OpenShift Knative Serving がインストールされていること。
- ネイティブコンパイルの場合は、Podman または Docker などのコンテナー環境が必要。
-
knCLI ツールがインストールされていること。
手順
- Quarkus プロジェクトが含まれるディレクトリーに移動します。
以下のいずれかの方法を使用して、Linux 実行可能ファイルをビルドします。
Docker を使用する場合
./mvnw package -Pnative -Dquarkus.native.container-build=true -Dquarkus.native.builder-image=registry.access.redhat.com/quarkus/mandrel-20-rhel8:20.3
Podman を使用する場合
./mvnw package -Pnative -Dquarkus.native.container-build=true -Dquarkus.native.container-runtime=podman -Dquarkus.native.builder-image=registry.access.redhat.com/quarkus/mandrel-20-rhel8:20.3
src/main/docker/Dockerfile.nativeファイルを開き、<image_name>パラメーターおよび<version>パラメーターを設定します。Docker を使用する場合
docker build -f src/main/docker/Dockerfile.native -t <image_name>:<version> .
Podman を使用する場合
podman build -f src/main/docker/Dockerfile.native -t <image_name>:<version>.
CI 環境および OpenShift 環境がアクセスできるリポジトリーにコンテナーをプッシュします。ここで、
<registry>はレジストリーの URL になります。Docker を使用する場合
docker tag <image_name>:<version> <registry>/<image_name>:<version> docker push <registry>/<image_name>:<version>
Podman を使用する場合
podman tag <image_name>:<version> <registry>/<image_name>:<version> podman push <registry>/<image_name>:<version>
OpenShift CLI (oc) にログインします。
oc login
新しい OpenShift プロジェクトを作成するには、以下のコマンドを実行します。このコマンドの
<project_name>は、新規プロジェクトの名前に置き換えます。oc new-project <project_name>
OpenShift Serverless CLI (kn) を使用して、サーバーレスアプリケーションとしてコンテナーをデプロイするには、以下のコマンドを入力します。
<service_name>は、お使いのサービスの名前に置き換えます。kn service create <service_name> --image REPOSITORY/<image_name>:<version>
サービスの準備ができていることを確認するには、以下のコマンドを入力します。
kn service list <service_name>
サービスの準備ができている場合は、「READY」と呼ばれる列の出力に
trueと表示されます。注記イメージがプルダウンされて準備ができたときではなく、必要なコンポーネントが作成されるときに、
kn serviceコマンドはtrueを返します。