OpenShift Container Platform への Red Hat build of Quarkus アプリケーションのデプロイ
概要
多様性を受け入れるオープンソースの強化 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、用語の置き換えは、今後の複数のリリースにわたって段階的に実施されます。詳細は、Red Hat CTO である Chris Wright のメッセージ をご覧ください。
第1章 OpenShift Container Platform への Red Hat build of Quarkus アプリケーションのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
アプリケーション開発者は、1 つの Maven コマンドを使用して、Quarkus アプリケーションを Red Hat OpenShift Container Platform にデプロイできます。この機能は、Docker ビルドストラテジーや Source-to-Image (S2I) ストラテジーなど、複数のデプロイメントオプションをサポートする quarkus-openshift エクステンションによって提供されます。
ここでは、Quarkus アプリケーションを実稼働環境にデプロイするための推奨ワークフローを説明します。を学習します。Quarkus アプリケーションをデプロイする他の方法については、Quarkus コミュニティーのドキュメント を参照してください。
前提条件
- OpenJDK 11 または 17 がインストールされている。
-
JAVA_HOME環境変数を Java SDK の場所に設定している。 - Apache Maven 3.8.6 以降がインストールされている。
quarkus-openshiftエクステンションが含まれる Quarkus Maven プロジェクトがある。- Quarkus OpenShift エクステンションを追加するには、Quarkus OpenShift エクステンションの追加 を参照してください。
OpenShift Container Platform クラスターとインストールされている
ocツールの最新の互換バージョンにアクセスできる。-
ocツールのインストールについて、詳細は OpenShift Container Platform クラスターのインストールと設定 を参照してください。
-
1.1. OpenShift Container Platform のビルドストラテジーと Red Hat build of Quarkus リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform は、コンテナー化されたアプリケーションの開発および実行に使用する Kubernetes ベースのプラットフォームです。Kubernetes アップストリームプロジェクトは追加のストラテジーを提供していますが、Red Hat は Quarkus の次のストラテジーのみサポートします。
1.1.1. OpenShift Container Platform ビルドストラテジーの概要 リンクのコピーリンクがクリップボードにコピーされました!
- Docker ビルド
- このストラテジーは、OpenShift Container Platform クラスターの外 (ローカルまたは CI 環境) にアーティファクトをビルドし、それを Dockerfile と併せて OpenShift Container Platform ビルドシステムに提供します。アーティファクトには、JAR ファイルまたはネイティブ実行可能ファイルが含まれます。コンテナーは OpenShift Container Platform クラスター内にビルドされ、イメージストリームとして提供されます。
OpenShift Container Platform Docker ビルドストラテジーは、JVM を対象とする Quarkus アプリケーション、またはネイティブ実行可能ファイルにコンパイルされた Quarkus アプリケーションをサポートすることから、推奨ビルドストラテジーとなっています。ただし、以前の Quarkus バージョンとの互換性を考慮して、デフォルトのビルドストラテジーは S2I です。OpenShift Container Platform Docker ビルドストラテジーを選択するには、quarkus.openshift.build-strategy プロパティーを使用します。
- Source to Image (S2I)
- ビルドプロセスは、OpenShift Container Platform クラスター内で実行されます。Red Hat build of Quarkus は、S2I を使用して Red Hat build of Quarkus を JVM アプリケーションとしてデプロイすることを完全にサポートしています。
- バイナリー S2I
- このストラテジーでは、S2I ビルドプロセスへの入力として JAR ファイルを使用するため、アプリケーションのビルドとデプロイが高速化されます。
1.1.2. Quarkus でサポートされるビルドストラテジー リンクのコピーリンクがクリップボードにコピーされました!
次の表は、Red Hat build of Quarkus 3.2 でサポートされるビルドストラテジーの概要を示しています。
| ビルドストラテジー | Red Hat build of Quarkus ツールのサポート | JVM のサポート | ネイティブのサポート | JVM Serverless のサポート | ネイティブ Serverless のサポート |
|---|---|---|---|---|---|
| Docker ビルド | はい | はい | はい | はい | はい |
| S2I バイナリー | はい | はい | いいえ | いいえ | いいえ |
| Source S2I | いいえ | はい | いいえ | いいえ | いいえ |
1.2. Red Hat build of Quarkus OpenShift エクステンションを追加する リンクのコピーリンクがクリップボードにコピーされました!
アプリケーションを OpenShift Container Platform クラスター内で実行されるコンテナーイメージとしてビルドし、デプロイするには、Red Hat build of Quarkus OpenShift エクステンション quarkus-openshift を依存関係としてプロジェクトに追加する必要があります。
Quarkus OpenShift エクステンションは、イメージストリーム、ビルド設定、デプロイメント設定、サービス定義などの OpenShift Container Platform リソースも生成します。Quarkus アプリケーションに quarkus-smallrye-health エクステンションが含まれている場合、OpenShift Container Platform はヘルスエンドポイントにアクセスし、アプリケーションの起動、ライブネス、レディネスを確認できます。
前提条件
Quarkus Maven プロジェクトがある。
- Maven を使用して Quarkus プロジェクトを作成する方法の詳細は、Apache Maven を使用した Red Hat build of Quarkus アプリケーションの開発とコンパイル を参照してください。
手順
以下のいずれかの方法を使用して、プロジェクトに
quarkus-openshiftエクステンションを追加します。pom.xmlファイルを設定します。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 OpenShift Container Platform CLI で次のコマンドを入力します。
./mvnw quarkus:add-extension -Dextensions="io.quarkus:quarkus-openshift"
./mvnw quarkus:add-extension -Dextensions="io.quarkus:quarkus-openshift"Copy to Clipboard Copied! Toggle word wrap Toggle overflow Quarkus CLI で次のコマンドを入力します。
quarkus extension add 'quarkus-openshift'
quarkus extension add 'quarkus-openshift'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.3. 必要な OpenShift Container Platform プロジェクトに切り替える リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenShift Container Platform コマンドラインインターフェイス (CLI) を使用して、アプリケーションを作成し、OpenShift Container Platform プロジェクトを管理できます。提供された情報を使用して OpenShift Container Platform プロジェクトを作成するか、既存プロジェクトに切り替えます。
前提条件
OpenShift Container Platform クラスターとインストールされている
ocツールの最新の互換バージョンにアクセスできる。-
ocツールのインストールについて、詳細は OpenShift Container Platform クラスターのインストールと設定 を参照してください。
-
手順
ocツールにログインします。oc login
oc loginCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力し、現在のプロジェクトスペースを表示します。
oc project -q
oc project -qCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のいずれかの手順を使用して、必要な OpenShift Container Platform プロジェクトに移動します。
プロジェクトがすでに存在する場合、そのプロジェクトに切り替えます。
oc project <project_name>
oc project <project_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow プロジェクトが存在しない場合、新規プロジェクトを作成します。
oc new-project <project_name>
oc new-project <project_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.4. Red Hat build of Quarkus Java アプリケーションを OpenShift Container Platform にデプロイする リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Quarkus OpenShift エクステンションを使用すると、Docker ビルドストラテジーを使用して Quarkus アプリケーションを OpenShift Container Platform にデプロイできます。コンテナーは OpenShift Container Platform クラスター内にビルドされ、イメージストリームとして提供されます。
Quarkus プロジェクトには、事前に生成された Dockerfile と手順が含まれています。カスタム Dockerfile を使用する場合は、src/main/docker ディレクトリー、またはモジュール内の任意の場所にファイルを追加する必要があります。また、quarkus.openshift.jvm-dockerfile プロパティーを使用して Dockerfile へのパスを設定する必要があります。
前提条件
-
quarkus-openshiftエクステンションを含む Red Hat build of Quarkus Maven プロジェクトがある。 - 必要な OpenShift Container Platform プロジェクトに切り替える で説明されているとおり、正しい OpenShift プロジェクト namespace で作業している。
手順
application.properties設定ファイルで Docker ビルドストラテジーを設定します。quarkus.openshift.build-strategy=docker
quarkus.openshift.build-strategy=dockerCopy to Clipboard Copied! Toggle word wrap Toggle overflow (オプション) 環境で必要な場合、
application.propertiesファイルに次のプロパティーを設定します。信頼されていない証明書を使用している場合は、
KubernetesClientを設定します。quarkus.kubernetes-client.trust-certs=true
quarkus.kubernetes-client.trust-certs=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow サービスを公開して OpenShift Container Platform ルートを作成します。
quarkus.openshift.route.expose=true
quarkus.openshift.route.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
Quarkus アプリケーションをパッケージ化し、現在の OpenShift プロジェクトにデプロイします。
./mvnw clean package -Dquarkus.kubernetes.deploy=true
./mvnw clean package -Dquarkus.kubernetes.deploy=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
検証手順と関連するターミナル出力は、openshift-helloworld サンプルアプリケーションで確認できます。
現在の OpenShift プロジェクトに関連付けられている Pod のリストを表示します。
oc get pods
oc get podsCopy to Clipboard Copied! Toggle word wrap Toggle overflow NAME READY STATUS RESTARTS AGE openshift-helloworld-1-build 0/1 Completed 0 11m openshift-helloworld-1-deploy 0/1 Completed 0 10m openshift-helloworld-1-gzzrx 1/1 Running 0 10m
NAME READY STATUS RESTARTS AGE openshift-helloworld-1-build 0/1 Completed 0 11m openshift-helloworld-1-deploy 0/1 Completed 0 10m openshift-helloworld-1-gzzrx 1/1 Running 0 10mCopy to Clipboard Copied! Toggle word wrap Toggle overflow アプリケーションの Pod のログ出力を取得するには、対象となる Pod の
<pod_name>値を指定してoc logs -fコマンドを使用します。この例では、アプリケーションの名前が接頭辞として付けられた最新の Pod に対応するopenshift-helloworld-1-gzzrxPod 名を使用します。oc logs -f openshift-helloworld-1-gzzrx
oc logs -f openshift-helloworld-1-gzzrxCopy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow サービスのリストを取得します。
oc get svc
oc get svcCopy to Clipboard Copied! Toggle word wrap Toggle overflow NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE openshift-helloworld ClusterIP 172.30.64.57 <none> 80/TCP 14m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE openshift-helloworld ClusterIP 172.30.64.57 <none> 80/TCP 14mCopy to Clipboard Copied! Toggle word wrap Toggle overflow アプリケーションをテストするための URL を取得します。
oc get routes
oc get routesCopy to Clipboard Copied! Toggle word wrap Toggle overflow NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD openshift-helloworld openshift-helloworld-username-dev.apps.sandbox-m2.ll9k.p1.openshiftapps.com openshift-helloworld http None
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD openshift-helloworld openshift-helloworld-username-dev.apps.sandbox-m2.ll9k.p1.openshiftapps.com openshift-helloworld http NoneCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記ルートは、ポート 8080 ではなくポート 80 をリッスンしていることに注意してください。
このサンプルで示されているアプリケーションは、
curlと、oc get Routesからの完全な URL 出力 (http://openshift-helloworld-username-dev.apps.sandbox-m2.ll9k.p1.openshiftapps.com) を使用して、Web ブラウザーまたはターミナルでテストできます。例:
curl http://openshift-helloworld-username-dev.apps.sandbox-m2.ll9k.p1.openshiftapps.com
1.5. ネイティブ実行可能ファイルにコンパイルされた Red Hat build of Quarkus アプリケーションをデプロイする リンクのコピーリンクがクリップボードにコピーされました!
Docker ビルドストラテジーを使用して、ネイティブ Red Hat build of Quarkus アプリケーションを OpenShift Container Platform にデプロイできます。Linux AMD64 オペレーティングシステムをターゲットとするアプリケーションのネイティブ実行可能ファイルを作成する必要があります。ホストオペレーティングシステムがこれと異なる場合は、Docker や Podman などのコンテナーランタイムを使用してネイティブ Linux 実行可能ファイルを作成します。
Quarkus プロジェクトには、事前に生成された Dockerfile と手順が含まれています。カスタム Dockerfile を使用するには、src/main/docker ディレクトリー、またはモジュール内の任意の場所にファイルを追加し、quarkus.openshift.native-dockerfile プロパティーを使用して Dockerfile へのパスを設定します。
前提条件
- Linux AMD64 システムまたは Open Container Initiative (OCI) と互換性のあるコンテナーランタイム (Podman や Docker など) がある。
-
quarkus-openshiftエクステンションが含まれる Quarkus Maven プロジェクトがある。 - 必要な OpenShift Container Platform プロジェクトに切り替える で説明されているとおり、正しい OpenShift プロジェクト namespace で作業している。
手順
application.propertiesファイルで以下のプロパティーを設定します。Docker ビルドストラテジーを設定します。
quarkus.openshift.build-strategy=docker
quarkus.openshift.build-strategy=dockerCopy to Clipboard Copied! Toggle word wrap Toggle overflow コンテナーランタイムを設定します。
quarkus.native.container-build=true
quarkus.native.container-build=trueCopy 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 Container Platform ルートを作成します。
quarkus.openshift.route.expose=true
quarkus.openshift.route.expose=trueCopy 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 以下の例は、
Dockerfile.custom-nativeへのパスを示しています。quarkus.openshift.jvm-dockerfile=src/main/docker/Dockerfile.custom-native
quarkus.openshift.jvm-dockerfile=src/main/docker/Dockerfile.custom-nativeCopy 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
最後に、ネイティブ実行可能ファイルをビルドしてパッケージ化し、アプリケーションを OpenShift Container Platform にデプロイします。
./mvnw clean package -Pnative -Dquarkus.kubernetes.deploy=true
./mvnw clean package -Pnative -Dquarkus.kubernetes.deploy=true1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 1
- アプリケーションをネイティブ実行可能ファイルにコンパイルし、Kubernetes デプロイメントを有効にします。
検証
OpenShift Web コンソールを使用して、イメージストリームとサービスリソースが作成され、Quarkus アプリケーションがデプロイされていることを確認します。もしくは、次の OpenShift Container Platform コマンドラインインターフェイス (CLI) コマンドを実行できます。
oc get is oc get pods oc get svc
oc get is1 oc get pods2 oc get svc3 Copy 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
関連情報
1.6. S2I を使用して Red Hat build of Quarkus アプリケーションを OpenShift Container Platform にデプロイする リンクのコピーリンクがクリップボードにコピーされました!
Source-to-Image (S2I) メソッドを使用して、Red Hat build of Quarkus アプリケーションを OpenShift Container Platform にデプロイできます。S2I では、Git リポジトリーを使用するか、ビルド時にソースをアップロードして、ソースコードをビルドコンテナーに提供する必要があります。
S2I は、ネイティブデプロイメントではサポートされません。ネイティブ実行可能ファイルにコンパイルされた Quarkus アプリケーションをデプロイするには、Docker ビルドストラテジー を使用します。
S2I を使用して Quarkus アプリケーションを OpenShift Container Platform にデプロイする手順は、使用している Java バージョンにより異なります。
1.6.1. S2I を使用して Red Hat build of Quarkus アプリケーションを Java 17 を使用する OpenShift Container Platform にデプロイする リンクのコピーリンクがクリップボードにコピーされました!
Source-to-Image (S2I) メソッドを使用して、Java 17 で実行されている Red Hat build of Quarkus アプリケーションを OpenShift Container Platform にデプロイできます。
前提条件
- Java 17 でビルドされた Quarkus アプリケーションがある。Java 11 アプリケーションの詳細は、S2I を使用して Red Hat build of Quarkus アプリケーションを Java 11 を使用する OpenShift Container Platform にデプロイする を参照してください。
-
(オプション):
quarkus-openshiftエクステンションが含まれる Quarkus Maven プロジェクトがある。 - 必要な OpenShift Container Platform プロジェクトに切り替える で説明されているとおり、正しい OpenShift プロジェクト namespace で作業している。
- Quarkus Maven プロジェクトは Git リポジトリーでホストされている。
手順
pom.xmlファイルを開き、次のように Java 設定をバージョン 17 に変更します。<maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target>
<maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Java 17 アプリケーションをパッケージ化するには、次のコマンドを入力します。
./mvnw clean package
./mvnw clean packageCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
pom.xmlファイルと同じレベルに、.s2iというディレクトリーを作成します。 .s2iディレクトリーにenvironmentという名前のファイルを作成し、以下の内容を追加します。MAVEN_S2I_ARTIFACT_DIRS=target/quarkus-app S2I_SOURCE_DEPLOYMENTS_FILTER=app lib quarkus quarkus-run.jar JAVA_OPTIONS=-Dquarkus.http.host=0.0.0.0 AB_JOLOKIA_OFF=true JAVA_APP_JAR=/deployments/quarkus-run.jar
MAVEN_S2I_ARTIFACT_DIRS=target/quarkus-app S2I_SOURCE_DEPLOYMENTS_FILTER=app lib quarkus quarkus-run.jar JAVA_OPTIONS=-Dquarkus.http.host=0.0.0.0 AB_JOLOKIA_OFF=true JAVA_APP_JAR=/deployments/quarkus-run.jarCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更をリモート Git リポジトリーにコミットし、プッシュします。
次のコマンドを入力して、サポートされている OpenShift Container Platform イメージをインポートします。
oc import-image ubi8/openjdk-17 --from=registry.access.redhat.com/ubi8/openjdk-17 --confirm
oc import-image ubi8/openjdk-17 --from=registry.access.redhat.com/ubi8/openjdk-17 --confirmCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記- OpenShift イメージレジストリーを使用し、同じプロジェクト内のイメージストリームからプルしている場合、Pod サービスアカウントにはすでに正しい権限が付与されているはずです。
- 他の OpenShift Container Platform プロジェクトまたは保護されたレジストリーからイメージをプルする場合は、追加の設定手順が必要になることもあります。
詳細は、Red Hat OpenShift Container Platform のドキュメントで イメージプルシークレットの使用 を参照してください。
次のコマンドを入力して、プロジェクトのビルド、アプリケーションの作成、OpenShift Container Platform サービスのデプロイを実行します。
oc new-app registry.access.redhat.com/ubi8/openjdk-17~<git_path> --name=<project_name>
oc new-app registry.access.redhat.com/ubi8/openjdk-17~<git_path> --name=<project_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
<git_path> は、Quarkus プロジェクトをホストする Git リポジトリーへのパスです。たとえば、
oc new-app registry.access.redhat.com/ubi8/openjdk-17~https://github.com/johndoe/code-with-quarkus.git --name= code-with-quarkusです。Git リポジトリー用に SSH キーを設定していない場合は、Git パスを指定する際に、SSH URL の代わりに HTTPS URL を使用します。
- <project_name> はアプリケーションの名前です。
プロジェクトの更新バージョンをデプロイするには、更新を Git リポジトリーにプッシュしてから、以下のコマンドを入力します。
oc start-build <project_name>
oc start-build <project_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、ルートを Quarkus アプリケーションに公開します。
oc expose svc <project_name>
oc expose svc <project_name>Copy 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
1.6.2. S2I を使用して Red Hat build of Quarkus アプリケーションを Java 11 を使用する OpenShift Container Platform にデプロイする リンクのコピーリンクがクリップボードにコピーされました!
Source-to-Image (S2I) メソッドを使用して、Java 11 で実行されている Red Hat build of Quarkus アプリケーションを OpenShift Container Platform にデプロイできます。
前提条件
- Java 11 でビルドされた Quarkus アプリケーションがある。Java 17 アプリケーションの詳細は、S2I を使用して Red Hat build of Quarkus アプリケーションを Java 17 を使用する OpenShift Container Platform にデプロイする を参照してください。
-
(オプション):
quarkus-openshiftエクステンションが含まれる Quarkus Maven プロジェクトがある。 - 必要な OpenShift Container Platform プロジェクトに切り替える で説明されているとおり、正しい OpenShift Container Platform プロジェクト namespace で作業している。
- Quarkus Maven プロジェクトは Git リポジトリーでホストされている。
手順
pom.xmlファイルを開き、次のように Java 設定をバージョン 11 に変更します。<maven.compiler.source>11</maven.compiler.source> <maven.compiler.target>11</maven.compiler.target>
<maven.compiler.source>11</maven.compiler.source> <maven.compiler.target>11</maven.compiler.target>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Java 11 アプリケーションをパッケージ化するには、次のコマンドを入力します。
./mvnw clean package
./mvnw clean packageCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
pom.xmlファイルと同じレベルに、.s2iというディレクトリーを作成します。 .s2iディレクトリーにenvironmentという名前のファイルを作成し、以下の内容を追加します。MAVEN_S2I_ARTIFACT_DIRS=target/quarkus-app S2I_SOURCE_DEPLOYMENTS_FILTER=app lib quarkus quarkus-run.jar JAVA_OPTIONS=-Dquarkus.http.host=0.0.0.0 AB_JOLOKIA_OFF=true JAVA_APP_JAR=/deployments/quarkus-run.jar
MAVEN_S2I_ARTIFACT_DIRS=target/quarkus-app S2I_SOURCE_DEPLOYMENTS_FILTER=app lib quarkus quarkus-run.jar JAVA_OPTIONS=-Dquarkus.http.host=0.0.0.0 AB_JOLOKIA_OFF=true JAVA_APP_JAR=/deployments/quarkus-run.jarCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更をリモート Git リポジトリーにコミットし、プッシュします。
次のコマンドを入力して、サポートされている OpenShift Container Platform イメージをインポートします。
oc import-image ubi8/openjdk-11 --from=registry.access.redhat.com/ubi8/openjdk-11 --confirm
oc import-image ubi8/openjdk-11 --from=registry.access.redhat.com/ubi8/openjdk-11 --confirmCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記- OpenShift イメージレジストリーを使用し、同じプロジェクト内のイメージストリームからプルしている場合、Pod サービスアカウントにはすでに正しい権限が付与されているはずです。
他の OpenShift Container Platform プロジェクトまたは保護されたレジストリーからイメージをプルする場合は、追加の設定手順が必要になることもあります。
詳細は、Red Hat OpenShift Container Platform のドキュメントで イメージプルシークレットの使用 を参照してください。
-
IBM Z インフラストラクチャーにデプロイする場合は、代わりに
oc import-image ubi8/openjdk-11 --from=registry.redhat.io/ubi8/openjdk-11 --confirmを入力します。このイメージの詳細は、Red Hat build of OpenJDK 11 ページを参照してください。
次のコマンドを入力して、プロジェクトのビルド、アプリケーションの作成、OpenShift Container Platform サービスのデプロイを実行します。
oc new-app registry.access.redhat.com/ubi8/openjdk-11~<git_path> --name=<project_name>
oc new-app registry.access.redhat.com/ubi8/openjdk-11~<git_path> --name=<project_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
<git_path> は、Quarkus プロジェクトをホストする Git リポジトリーへのパスです。たとえば、
oc new-app registry.access.redhat.com/ubi8/openjdk-17~https://github.com/johndoe/code-with-quarkus.git --name= code-with-quarkusです。Git リポジトリー用に SSH キーを設定していない場合は、Git パスを指定する際に、SSH URL の代わりに HTTPS URL を使用します。
<project_name> はアプリケーションの名前です。
注記IBM Z インフラストラクチャー上にデプロイする場合は、代わりに
oc new-app ubi8/openjdk-11~<git_path> --name=<project_name>と入力します。
プロジェクトの更新バージョンをデプロイするには、更新を Git リポジトリーにプッシュしてから、以下のコマンドを入力します。
oc start-build <project_name>
oc start-build <project_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、ルートを Quarkus アプリケーションに公開します。
oc expose svc <project_name>
oc expose svc <project_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
次の子アンドを入力して、Pod のリストを表示します。
oc get pods
oc get podsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、アプリケーションの Pod のログ出力を取得します。
oc logs -f <pod_name>
oc logs -f <pod_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.7. OpenShift Container Platform 上でのデプロイメントのカスタマイズに使用する Red Hat build of Quarkus 設定プロパティー リンクのコピーリンクがクリップボードにコピーされました!
オプションの設定プロパティーを定義することで、OpenShift Container Platform 上のデプロイメントをカスタマイズできます。Red Hat build of Quarkus プロジェクトは、applications.properties ファイルまたはコマンドラインで設定できます。
| プロパティー | 説明 | デフォルト |
|---|---|---|
|
|
コンテナーイメージグループ。OpenShift Container Platform の |
|
|
| 使用するコンテナーレジストリー。 | |
|
| Kubernetes クライアント証明書認証。 | |
|
|
デプロイメントターゲットプラットフォーム。たとえば、 | |
|
| コンテナーランタイムを使用して、ネイティブ Linux 実行可能ファイルをビルドします。デフォルトで Docker が使用されます。 |
|
|
| イメージのビルドに使用されるコンテナーランタイム (Docker など)。 | |
|
| デプロイメントストラテジー。 |
|
|
| Quarkus アプリケーションのルートを公開します。 |
|
|
|
デバッグを有効にし、別の |
|