はじめに
テスト環境のKubernetes(EKS等)上で動作しているJavaアプリケーションをデバッグしたいとき、ローカルのIntelliJ IDEAからリモートデバッグできると便利です。
本記事では、その設定方法と手順の一例を紹介します。
前提条件
- IntelliJ IDEA がインストールされていること
-
kubectlコマンドが使用可能で、対象のKubernetesクラスタに接続できること - デバッグ対象のJavaアプリケーションのソースコードがローカルにあること
1. 事前準備
1.1 IntelliJ IDEAの設定
1. IntelliJ IDEAのメニューバーから 「実行」 > 「構成の編集...」 を選択
2. 左上の 「+」 ボタンをクリックし、「新規構成の追加」メニューを開き、「リモートJVM デバッグ」 を選択
3. 以下の設定を行う
4. 「OK」 をクリックして保存
1.2 JVMデバッグオプションの追加
Javaアプリケーションがデバッグ接続を受け入れられるように、JVMオプションを追加します。
起動コマンドを修正しても良いですが、環境変数 JAVA_TOOL_OPTIONS を使用することでも可能です。
spec:
template:
spec:
containers:
- name: your-app
env:
- name: JAVA_TOOL_OPTIONS
value: -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005
2. デバッグの実行手順
2.1 Podの起動
設定を反映したDeploymentをapplyしてPodを起動します。
kubectl apply -f your-deployment.yaml
2.2 ポートフォワードの設定
ローカルマシンからPodのデバッグポートにアクセスできるように、ポートフォワードを設定します。
kubectl port-forward -n {namespace名} {pod名} 5005:5005
kubectlでもできますが、IntelliJ IDEAのGUIからポートフォワードを設定することもできます。
1. Kubernetesプラグインを有効にする
2. Kubernetesクラスターに接続し、対象のPodが存在しているNamespaceに変更する
3. Podの一覧から対象のPodを選択して「ポートの転送」を実行する
2.3 IntelliJ IDEAでデバッグ開始
1. デバッグしたい箇所にブレークポイントを設定
2. 右上のドロップダウンから、先ほど設定したリモートデバッグ設定を選択
3. デバッグボタン(虫のアイコン) をクリック

2.4 動作確認
ブレークポイントを設定した処理が実行されるようにアプリケーションにリクエストを送ると、ブレークポイントで処理が停止します。
注意点
複数Pod環境での注意
Deploymentで複数のPodが起動している場合、リクエストがポートフォワードしていないPodにルーティングされると、ブレークポイントで停止しません。
セキュリティ上の注意
- 本番環境では絶対にデバッグオプションを追加しないでください
- デバッグオプションが入っていると、外部から任意のコードを実行される可能性があります
- テスト環境でも、デバッグ完了後は設定を戻すことを推奨します
まとめ
Kubernetes上のJavaアプリケーションをIntelliJ IDEAでリモートデバッグする手順を紹介しました。
- IntelliJ IDEAでRemote JVM Debug設定を作成
- K8sマニフェストで
JAVA_TOOL_OPTIONSを設定 - ポートフォワードを設定
- IntelliJ IDEAからデバッグ接続
この方法を使えば、テスト環境で発生する問題を効率的にデバッグできます。






