第4章 OpenShift 上の S2I のワークフロー例
4.1. OpenShift イメージのリモートデバッグ Java アプリケーション リンクのコピーリンクがクリップボードにコピーされました!
この手順の例では、S2I for OpenShift イメージを使用して、OpenShift にデプロイされた Java アプリケーションのリモートデバッグを示しています。環境変数 JAVA_DEBUG の値を true に設定し、JAVA_DEBUG_PORT を 9009 に設定すると、この機能を有効にできます。
JAVA_DEBUG 変数を true に設定され、JAVA_DEBUG_PORT 変数に値が提供されていない場合、JAVA_DEBUG_PORT 変数はデフォルトで 5005 に設定されます。
デプロイメントの準備
手順
以下のコマンドを実行して OpenShift インスタンスにログインし、認証情報を指定します。
oc login
$ oc loginCopy to Clipboard Copied! Toggle word wrap Toggle overflow 新しいプロジェクトを作成します。
oc new-project js2i-remote-debug-demo
$ oc new-project js2i-remote-debug-demoCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Deployment
新規および既存のアプリケーションのリモートデバッグを有効にできます。
新規アプリケーションのリモートデバッグの有効化
手順
S2I for OpenShift イメージと Java ソースコードのサンプルを使用して、新規アプリケーションを作成します。アプリケーションを作成する前に、
JAVA_DEBUGおよびJAVA_DEBUG_PORT環境変数を設定してください。oc new-app --context-dir=getting-started --name=quarkus-quickstart \ 'registry.access.redhat.com/ubi8/openjdk-11~https://github.com/quarkusio/quarkus-quickstarts.git#2.12.1.Final' -e JAVA_DEBUG=true \ -e JAVA_DEBUG_PORT=9009
$ oc new-app --context-dir=getting-started --name=quarkus-quickstart \ 'registry.access.redhat.com/ubi8/openjdk-11~https://github.com/quarkusio/quarkus-quickstarts.git#2.12.1.Final' -e JAVA_DEBUG=true \ -e JAVA_DEBUG_PORT=9009Copy to Clipboard Copied! Toggle word wrap Toggle overflow ローカルデバッグポートを Pod のポートに接続 に進みます。
既存アプリケーションのリモートデバッグの有効化
手順
適切な OpenShift プロジェクトに切り替えます。
oc project js2i-remote-debug-demo
$ oc project js2i-remote-debug-demoCopy to Clipboard Copied! Toggle word wrap Toggle overflow deploymentconfig の名前を取得します。
oc get dc -o name deploymentconfig/openshift-quickstarts
$ oc get dc -o name deploymentconfig/openshift-quickstartsCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
deploymentconfig を編集し、
JAVA_DEBUG=trueおよびJAVA_DEBUG_PORT=9009環境変数を追加します。 .spec.template.spec.containersパスとContainerのタイプで編集するオブジェクトを指定します。oc edit dc/openshift-quickstarts
$ oc edit dc/openshift-quickstartsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記エディターを起動し、ターミナルで
oc editコマンドを実行します。環境のEDITOR変数を定義することで、起動するエディターを変更できます。
ローカルデバッグポートを Pod のポートに接続 に進みます。
デプロイメント後
Pod のポートへのローカルデバッグポートの接続
手順
アプリケーションを実行している Pod の名前を取得します (Runningの状況)。
Pod 名 として表示される
openshift-quickstarts-1-1uymmの例oc get pods NAME READY STATUS RESTARTS AGE openshift-quickstarts-1-1uymm 1/1 Running 0 3m openshift-quickstarts-1-build 0/1 Completed 0 6m
$ oc get pods NAME READY STATUS RESTARTS AGE openshift-quickstarts-1-1uymm 1/1 Running 0 3m openshift-quickstarts-1-build 0/1 Completed 0 6mCopy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift または Kubernetes ポート転送機能を使用してローカルポートでリッスンし、OpenShift Pod のポートに転送します。<running-pod> は、直前のコマンド出力から Status "running" が設定された Pod の NAME フィールドの値です。
oc port-forward <running-pod> 5005:9009 Forwarding from 127.0.0.1:5005 -> 9009 Forwarding from [::1]:5005 -> 9009
$ oc port-forward <running-pod> 5005:9009 Forwarding from 127.0.0.1:5005 -> 9009 Forwarding from [::1]:5005 -> 9009Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記上記の例では、
5005はローカルシステムのポート番号ですが9009は OpenShift イメージの S2I を実行する OpenShift Pod のリモートポート番号です。そのため、ローカルポート5005に送信される今後のデバッグ接続は、Java 仮想マシン (JVM) を実行する OpenShift Pod のポート9009に転送されます。
このコマンドにより、ターミナルでそれ以上入力できなくなる場合があります。この場合は、以下の手順を実行するために新しいターミナルを開きます。
アプリケーションへのデバッガーの割り当て
手順
ローカルシステムのデバッガーを、S2I for OpenShift イメージで実行しているリモート JVM に割り当てます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記リモート OpenShift Pod へのローカルデバッガーが開始すると、以前の oc port-forward コマンドが発行されたコンソールに
5005接続を処理するのと同様のエントリーが表示されます。アプリケーションをデバッグします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
関連情報
- Openshift の共通オブジェクト参照に関する詳細は、OpenShift Common Object Reference, section Container セクションを参照してください。
- Red Hat JBoss Developer Studio の IDE デバッガーを S2I for OpenShift イメージを実行する OpenShift Pod に接続する方法は、Configuring and Connecting the IDE Debugger を参照してください。