第6章 S2I を使用した OpenShift への Quarkus アプリケーションのデプロイ
Source-to-Image (S2I) メソッドを使用して、Quarkus アプリケーションを OpenShift にデプロイできます。S2I では、Git リポジトリーを使用するか、ビルド時にソースをアップロードして、ソースコードをビルドコンテナーに提供する必要があります。
ネイティブ実行可能ファイルにコンパイルされた Quarkus アプリケーションをデプロイするには、Docker ビルドストラテジー を使用します。S2I はネイティブデプロイメントでサポートされる方法ではありません。
前提条件
-
quarkus-openshiftエクステンションが含まれる Quarkus Maven プロジェクトがある。 - Git リポジトリーで Quarkus Maven プロジェクトをホストしている。
ocを使用して OpenShift にログインし、プロジェクトを選択している。- OpenShift プロジェクトの namespace を確認するには、OpenShift プロジェクトの namespace の確認 を参照してください。
手順
- 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 イメージをインポートするには、以下のコマンドを入力します。
oc import-image --confirm ubi8/openjdk-11 --from=registry.access.redhat.com/ubi8/openjdk-11
oc import-image --confirm ubi8/openjdk-11 --from=registry.access.redhat.com/ubi8/openjdk-11Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記IBM Z インフラストラクチャーにデプロイする場合は、
oc import-image --confirm openj9/openj9-11-rhel8 --from=registry.redhat.io/openj9/openj9-11-rhel8を入力します。このイメージの詳細は、Red Hat OpenJ9 11 Java Applications on RHEL8 ページを参照してください。
OpenShift でプロジェクトをビルドするには、以下のコマンドを入力します。ここで、
<git_path>は Quarkus プロジェクトをホストする Git リポジトリーへのパスで、<project_name>は作成した OpenShift プロジェクトになります。oc new-app ubi8/openjdk-11 <git_path> --name=<project_name>
oc new-app ubi8/openjdk-11 <git_path> --name=<project_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記IBM Z インフラストラクチャーにデプロイする場合は、
oc new-app openj9/openj9-11-rhel8 <git_path> --name=<project_name>と入力します。このコマンドを実行すると、プロジェクトのビルド、アプリケーションの作成、そして OpenShift サービスのデプロイが行われます。
プロジェクトの更新バージョンをデプロイするには、更新を Git リポジトリーにプッシュしてから、以下のコマンドを入力します。
oc start-build <project_name>
oc start-build <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