第2章 サーバーレスアプリケーションとしての継続的インテグレーションでの 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
./mvnw package -Pnative -Dquarkus.native.container-build=true -Dquarkus.native.builder-image=registry.access.redhat.com/quarkus/mandrel-20-rhel8:20.3Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
./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.3Copy to Clipboard Copied! Toggle word wrap Toggle overflow
src/main/docker/Dockerfile.nativeファイルを開き、<image_name>パラメーターおよび<version>パラメーターを設定します。Docker を使用する場合
docker build -f src/main/docker/Dockerfile.native -t <image_name>:<version> .
docker build -f src/main/docker/Dockerfile.native -t <image_name>:<version> .Copy to Clipboard Copied! Toggle word wrap Toggle overflow Podman を使用する場合
podman build -f src/main/docker/Dockerfile.native -t <image_name>:<version>.
podman build -f src/main/docker/Dockerfile.native -t <image_name>:<version>.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
CI 環境および OpenShift 環境がアクセスできるリポジトリーにコンテナーをプッシュします。ここで、
<registry>はレジストリーの URL になります。Docker を使用する場合
docker tag <image_name>:<version> <registry>/<image_name>:<version> docker push <registry>/<image_name>:<version>
docker tag <image_name>:<version> <registry>/<image_name>:<version> docker push <registry>/<image_name>:<version>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Podman を使用する場合
podman tag <image_name>:<version> <registry>/<image_name>:<version> podman push <registry>/<image_name>:<version>
podman tag <image_name>:<version> <registry>/<image_name>:<version> podman push <registry>/<image_name>:<version>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
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 OpenShift Serverless CLI (kn) を使用して、サーバーレスアプリケーションとしてコンテナーをデプロイするには、以下のコマンドを入力します。
<service_name>は、お使いのサービスの名前に置き換えます。kn service create <service_name> --image REPOSITORY/<image_name>:<version>
kn service create <service_name> --image REPOSITORY/<image_name>:<version>Copy to Clipboard Copied! Toggle word wrap Toggle overflow サービスの準備ができていることを確認するには、以下のコマンドを入力します。
kn service list <service_name>
kn service list <service_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow サービスの準備ができている場合は、「READY」と呼ばれる列の出力に
trueと表示されます。注記イメージがプルダウンされて準備ができたときではなく、必要なコンポーネントが作成されるときに、
kn serviceコマンドはtrueを返します。