Red Hat OpenShift Container Platform での Quarkus アプリケーションのデプロイ
概要
前書き リンクのコピーリンクがクリップボードにコピーされました!
アプリケーション開発者は、1 つのビルドコマンドで Apache Maven および quarkus-openshift エクステンションを使用して、または従来の Source-to-Image (S2I) 手法を使用して、Red Hat OpenShift Container Platform に Quarkus アプリケーションをデプロイすることできます。どちらの手法を使用しても、作成されるイメージは完全にサポートされます。開発サポートの対象となるビルドプロセスおよびツールの詳細は、開発サポートの対象範囲 のページを参照してください。
前提条件
-
OpenJDK 11 がインストールされ、
JAVA_HOME環境変数が Java SDK の場所を指定していること。Red Hat ビルドの Open JDK は、Red Hat カスタマーポータルの Software Downloads ページから入手可能です (ログインが必要です)。 - Apache Maven 3.6.2 以降がインストールされていること。Maven は Apache Maven Project の Web サイトから入手できます。
Quarkus Maven プロジェクトがあること。Maven を使用した簡単な Quarkus アプリケーションのビルドに関する説明は、『Red Hat ビルドの Quarkus のスタートガイド』 を参照してください。
注記Quarkus Maven プロジェクトの完全なサンプルについては、Quarkus quickstart archive をダウンロードするか、
Quarkus QuickstartsGit リポジトリーをクローンしてください。この例はgetting-startedディレクトリーにあります。- Red Hat OpenShift Container Platform クラスターにアクセスでき、最新バージョンの OpenShift CLI (oc) がインストールされていること。oc のインストールに関する詳細は、『OpenShift Container Platform クラスターのインストールおよび設定』 ガイドを参照してください。
第1章 Red Hat ビルドの Quarkus リンクのコピーリンクがクリップボードにコピーされました!
Red Hat ビルドの Quarkus は、コンテナーおよび Red Hat OpenShift Container Platform と使用するために最適化された Kubernetes ネイティブ Java スタックです。Quarkus は、Eclipse MicroProfile、Apache Kafka、RESTEasy (JAX-RS)、Hibernate ORM (JPA)、Spring、Infinispan、Apache Camel などの一般的な Java 標準、フレームワーク、およびライブラリーと連携するように設計されています。
Quarkus のディペンデンシーインジェクション (依存性の注入) ソリューションは、CDI (コンテキストとディペンデンシーインジェクション) をベースとし、エクステンションフレームワークを備えているので、機能の拡張、およびフレームワークの設定、起動、アプリケーションへの統合が可能です。
Quarkus は、コンテナーファーストという手法で Java アプリケーションをビルドします。この手法により、Java で書かれたマイクロサービスベースのアプリケーションのビルドが大幅に容易になるほか、これらのアプリケーションがサーバーレスコンピューティングフレームワークで実行している関数を呼び出すことができるようになります。これにより、Quarkus アプリケーションのメモリーフットプリントは小さくなり、起動時間は高速化されます。
第2章 Red Hat OpenShift Container Platform リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform は、コンテナー化されたアプリケーションを開発し、実行するための Kubernetes ベースのプラットフォームです。アプリケーションおよびアプリケーションをサポートするデータセンターが、わずかなシステムとアプリケーションから、数百万ものクライアントに対応する数千ものシステムへと拡張できるように設計されています。
OpenShift は、アプリケーションのコンテナーイメージをビルドするための 2 つのワークフロー (ソースワークフローとバイナリーワークフロー) をサポートします。どちらのワークフローも Source-to-Image (S2I) 機能をベースとしており、両方のワークフローはソースワークフローを使用して S2I ビルドに依存します。主な違いは、ソースワークフローは OpenShift 内でアプリケーションのデプロイ可能なアーティファクトを生成し、バイナリーワークフローは OpenShift 外でこれらのバイナリーアーティファクトを生成する点です。いずれも OpenShift 内でアプリケーションコンテナーイメージをビルドします。バイナリーワークフローは、コンテナーイメージを生成する OpenShift S2I ビルドのソースとしてアプリケーションバイナリーを提供します。
第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"
./mvnw quarkus:add-extension -Dextensions="openshift"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記新規プロジェクトの作成時に
-Dextensions="openshift"引数を含めて、Quarkus OpenShift エクステンションを追加することができます。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 7 イメージを使用するように OpenShift を設定するには、以下の行を
application.propertiesファイルに追加します。quarkus.s2i.base-jvm-image=registry.access.redhat.com/openjdk/openjdk-11-rhel7
quarkus.s2i.base-jvm-image=registry.access.redhat.com/openjdk/openjdk-11-rhel7Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記IBM Z インフラストラクチャーにデプロイする場合は、
application.propertiesファイルにquarkus.s2i.base-jvm-image=registry.access.redhat.com/openj9/openj9-11-rhel8を追加します。OpenShift ルートを作成するには、以下の行を
application.propertiesファイルに追加します。quarkus.openshift.expose=true
quarkus.openshift.expose=trueCopy 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_NAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow プロジェクトを OpenShift にデプロイするには、Quarkus Maven プロジェクトディレクトリーに以下のコマンドを入力します。
./mvnw clean package -Dquarkus.kubernetes.deploy=true
./mvnw clean package -Dquarkus.kubernetes.deploy=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift プロジェクトでデプロイされたすべてのアプリケーションの名前およびルートを表示するには、以下のコマンドを入力します。
oc get route
oc get routeCopy to Clipboard Copied! Toggle word wrap Toggle overflow アプリケーションの完全な URL を表示するには、以下のコマンドを入力します。ここで、
APPLICATION_NAMEは OpenShift プロジェクトにデプロイされたアプリケーションの名前になります。export URL="http://$(oc get route APPLICATION_NAME -o jsonpath='{.spec.host}')" echo "Application URL: $URL" curl $URL/helloexport URL="http://$(oc get route APPLICATION_NAME -o jsonpath='{.spec.host}')" echo "Application URL: $URL" curl $URL/helloCopy to Clipboard Copied! Toggle word wrap Toggle overflow ルートの
helloエンドポイントに HTTP 要求を作成するには、以下のコマンドを入力します。curl $URL/hello
curl $URL/helloCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第4章 S2I を使用した OpenShift での Quarkus アプリケーションのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
従来の Source-to-Image (S2I) 手法は、Red Hat OpenShift Container Platform でのアプリケーションのデプロイにおける推奨される方法として、広く使用されています。S2I では、Git リポジトリーを使用するか、ビルド時にソースをアップロードして、ソースコードをビルドコンテナーに提供する必要があります。この手法を使用して、実稼働環境に Quarkus アプリケーションをデプロイします。
前提条件
- Git リポジトリーでホストされる Quarkus Maven プロジェクトがあること。
手順
- Quarkus Maven プロジェクトが含まれるディレクトリーに移動します。
-
pom.xmlファイルと同じレベルで、.s2iという名前の隠しディレクトリーを作成します。 .s2iディレクトリーにenvironmentという名前のファイルを作成し、以下の内容を追加します。ARTIFACT_COPY_ARGS=-p -r lib/ *-runner.jar
ARTIFACT_COPY_ARGS=-p -r lib/ *-runner.jarCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更をリモート Git リポジトリーにコミットし、プッシュします。
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_NAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow サポートされる OpenShift イメージをインポートするには、以下のコマンドを入力します。
oc import-image --confirm openjdk/openjdk-11-rhel7 --from=registry.access.redhat.com/openjdk/openjdk-11-rhel7
oc import-image --confirm openjdk/openjdk-11-rhel7 --from=registry.access.redhat.com/openjdk/openjdk-11-rhel7Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記IBM Z インフラストラクチャーにデプロイする場合は、
oc import-image --confirm openj9/openj9-11-rhel8 --from=registry.access.redhat.com/openj9/openj9-11-rhel8を入力します。このイメージの詳細は、Red Hat OpenJDK 11 Java Applications ページを参照してください。
OpenShift でプロジェクトをビルドするには、以下のコマンドを入力します。
GIT_PATHは Quarkus プロジェクトをホストする Git リポジトリーへのパス、PROJECT_NAMEは作成した OpenShift プロジェクトに置き換えます。oc new-app openjdk-11-rhel7 GIT_PATH --name=PROJECT_NAME
oc new-app openjdk-11-rhel7 GIT_PATH --name=PROJECT_NAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記IBM Z インフラストラクチャーにデプロイする場合は、
oc new-app openj9/openj9-11-rhel8 GIT_PATH --name=PROJECT_NAMEを入力します。このコマンドを実行すると、プロジェクトのビルド、アプリケーションの作成、そして OpenShift サービスのデプロイが行われます。
OpenShift ルートを作成するには、以下のコマンドを入力します。
oc expose service/PROJECT_NAME
oc expose service/PROJECT_NAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow 新規ルートを表示するには、以下のコマンドを入力します。このコマンドの
APPLICATION_NAMEは、OpenShift プロジェクトにデプロイされたアプリケーションの名前に置き換えます。export URL="http://$(oc get route APPLICATION_NAME -o jsonpath='{.spec.host}}')" echo "Application URL: $URL"export URL="http://$(oc get route APPLICATION_NAME -o jsonpath='{.spec.host}}')" echo "Application URL: $URL"Copy to Clipboard Copied! Toggle word wrap Toggle overflow ルートの
helloエンドポイントに HTTP 要求を作成するには、以下のコマンドを入力します。curl $URL/hello
curl $URL/helloCopy to Clipboard Copied! Toggle word wrap Toggle overflow - アプリケーションを使用するには、前のコマンドで返された URL を Web ブラウザーで入力します。
プロジェクトの更新バージョンをデプロイするには、更新を Git リポジトリーにプッシュしてから、以下のコマンドを入力します。
oc start-build PROJECT_NAME
oc start-build PROJECT_NAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow - ビルドの完了後にブラウザーページを更新し、変更を確認します。
改訂日時: 2020-11-18 01:18:31 UTC