Cloud Code for IntelliJ を使用して Kubernetes アプリケーションをデバッグする

Cloud Code for IntelliJ を使用すると、Kubernetes クラスタにデプロイされたアプリケーションを簡単にデバッグできます。ローカル クラスタ(Minikube や Docker Desktop など)、Google Kubernetes Engine、その他のクラウド プロバイダでアプリケーションをデバッグできます。

Cloud Code のデバッグ サポートによって、ポート転送の設定、デバッグ バックエンドのインストール、言語固有のデバッグ引数の正しい挿入などを手動で設定する必要がなくなります。必要なのは、skaffold.yaml 構成ファイルを含む Cloud Code 対応の Kubernetes アプリケーションだけです。

Cloud Code を使用すると、ソースコードを変更して反復処理しながらアプリケーションをデバッグすることもできます。

サポートされている IDE

次の表に、Cloud Code がデバッグをサポートしている言語と IDE を示します。次の表はまた、必要なプラグインも示しています。

言語 サポートされている IDE とエディション 必要なプラグイン
Java IntelliJ IDEA Ultimate 該当なし
IntelliJ IDEA Community 該当なし
Go IntelliJ IDEA Ultimate Go プラグイン
GoLand 該当なし
Node.js IntelliJ IDEA Ultimate Node.js プラグイン
WebStorm 該当なし
Python IntelliJ IDEA Ultimate Python プラグイン
PyCharm Professional 該当なし

IDE のサポートの詳細については、サポートされている JetBrains IDE をご覧ください。

Cloud Code を使用すると、次の言語のコンテナで実行されるリモート アプリケーションのブレークポイントの設定やデバッグを行うことができます。

Java

Cloud Code では、デバッグを有効にするために、適切な JDWP 構成とともに環境変数 JAVA_TOOL_OPTIONS が自動的に追加されます。JAVA_TOOL_OPTIONS がすでに存在する場合、Cloud Code は JAVA_TOOL_OPTIONS で指定された既存の設定を使用します。

Node.js

アプリケーションの構造とイメージビルド構成によっては、デバッガでローカルソースをコンテナ内のリモートソースにマッピングできるようにする必要がある可能性があります。これにより、Node デバッガがブレークポイントを正しく処理できるようになります。

これは、次のいずれかの方法で構成できます。

  • 手動設定

    プルダウンから [Develop on Kubernetes] 実行構成を選択し、[Edit Configurations] をクリックします。[Debug] タブで、ローカル アプリケーション ソースからリモート コンテナのソースのロケーションへのソース マッピングを構成します。

    [デバッグ] タブのソース マッピング セクションでソースの場所を選択する

    設定オプション

    • File/directory - Kubernetes で実行されるアプリケーションのローカル ファイルまたはディレクトリ。
    • Remote path - Kubernetes のコンテナ内で実行されるファイルまたはディレクトリへのパス。
  • 自動設定

    このマッピングを Cloud Code に任せることもできます。デバッグ セッションを開始すると、Cloud Code はこのマッピングを自動的に推定しようとします。推定されたマッピングは、デバッグするアーティファクトごとに 1 つ作成されるダイアログに表示されます。

    使用されるリモートパスを指定する各アーティファクトのダイアログをマッピングするリモートパス

    設定オプション

    • Local path - デバッグしているアーティファクトのルートへのローカルパス。
    • Remote path - Kubernetes のコンテナ内で実行されるファイルまたはディレクトリへのパス。 この値は、独自の値でオーバーライドできます。[Cancel] をクリックすると、マッピングは適用されません。

Go

デバッグ用にアプリを設定するには、アプリケーションが Go モジュールベースのアプリケーションであり、コンテナで標準 Go ランタイム環境変数GODEBUGGOGCGOMAXPROCSGOTRACEBACK など)のいずれかが設定されて Go ベースであることが示されている必要があります。GOTRACEBACK=single は Go のデフォルト設定で、GOTRACEBACK=all は一般的に有用な構成です。

必要に応じて、-gcflags='all=-N -l' オプションを指定してアプリをビルドし、最適化を無効にすることをおすすめします。Skaffold プロファイルはこの目的で使用する便利なオプションであり、[Build/Deploy] タブの [Run] 構成の [Deployment Profile] フィールドで設定できます。

Python

デバッグ用にアプリケーションを構成するには、次の前提条件を満たす必要があります。

  • IDE、エディション、プラグインとの互換性がある

    互換性のある IDE、エディション、プラグインについては、サポートされる IDE をご覧ください。

  • Skaffold のバージョンが 1.25.0 以上

    Cloud Code で、依存関係を管理するか、ローカルの Skaffold インストールを指すように指定できます。[Preferences] > [Tools] > [Cloud Code] > [Dependencies] をご覧ください。

  • Python インタープリタが構成されている

    プロジェクトで Python インタープリタを構成していない場合、基盤となる Python デバッガである pydevd を実行することができないため、デバッグは機能しません。

    IDE 構成方法
    IntelliJ IDEA Cloud Code を使用した Python のデバッグでは、プロジェクト用に Python SDK を構成する必要があります。

    [File] > [Project Structure] に移動し、[Project] タブで Python SDK を追加します。存在しない場合は、[SDK] タブで追加します。
    PyCharm [File] > [Settings] > [Project] > [Python Interpreter] に移動するか、Mac OS X の場合は [PyCharm] > [Preferences] > [Project] > [Python Interpreter] に移動して、Python インタープリタを追加します。

詳細については、Skaffold のデバッグのドキュメントをご覧ください。

アプリケーションをデバッグする

  1. Kubernetes クラスタのデバッグモードで開発サイクルを開始するには、アクションの実行アイコン [Develop on Kubernetes] のデバッグ アクションをクリックします。

    Kubernetes クラスタの開発サイクルをデバッグモードで開始する

    継続的な開発サイクルがデバッグモードで開始されます。

    Cloud Code は、デバッグ セッションをアタッチします。

    Kubernetes デバッガをアタッチ済み

  2. ブレークポイントの設定、コードのステップ実行など、ローカルコードのデバッグ時に普段行うタスクをライブの Kubernetes クラスタに対して実行できるようになりました。

    Kubernetes デバッガ セッション

  3. デバッグ セッションを終了するには、[Develop on Kubernetes] 実行構成の停止アイコンをクリックします。

次のステップ

サポートを受ける

IntelliJ IDE でフィードバックを送信するか、問題を報告するには、[Tools] > [Cloud Code] > [Help / About] > [Submit feedback or report an issue] を選択します。ここから、GitHub で問題を報告したり、Stack Overflow で質問したりできます。