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] タブで、ローカル アプリケーション ソースからリモート コンテナのソースのロケーションへのソース マッピングを構成します。 ![[デバッグ] タブのソース マッピング セクションでソースの場所を選択する](https://cloud.google.com/static/code/docs/intellij/images/source-mappings.png?authuser=4&hl=ja) - 設定オプション - File/directory - Kubernetes で実行されるアプリケーションのローカル ファイルまたはディレクトリ。
- Remote path - Kubernetes のコンテナ内で実行されるファイルまたはディレクトリへのパス。
 
- 自動設定 - このマッピングを Cloud Code に任せることもできます。デバッグ セッションを開始すると、Cloud Code はこのマッピングを自動的に推定しようとします。推定されたマッピングは、デバッグするアーティファクトごとに 1 つ作成されるダイアログに表示されます。  - 設定オプション - Local path - デバッグしているアーティファクトのルートへのローカルパス。
- Remote path - Kubernetes のコンテナ内で実行されるファイルまたはディレクトリへのパス。 この値は、独自の値でオーバーライドできます。[Cancel] をクリックすると、マッピングは適用されません。
 
Go
デバッグ用にアプリを設定するには、アプリケーションが Go モジュールベースのアプリケーションであり、コンテナで標準 Go ランタイム環境変数(GODEBUG、GOGC、GOMAXPROCS、GOTRACEBACK など)のいずれかが設定されて 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 のデバッグのドキュメントをご覧ください。
アプリケーションをデバッグする
- Kubernetes クラスタのデバッグモードで開発サイクルを開始するには、  [Develop on Kubernetes] のデバッグ アクションをクリックします。 [Develop on Kubernetes] のデバッグ アクションをクリックします。 - 継続的な開発サイクルがデバッグモードで開始されます。 - Cloud Code は、デバッグ セッションをアタッチします。   
- ブレークポイントの設定、コードのステップ実行など、ローカルコードのデバッグ時に普段行うタスクをライブの Kubernetes クラスタに対して実行できるようになりました。   
- デバッグ セッションを終了するには、[Develop on Kubernetes] 実行構成の停止アイコンをクリックします。 
次のステップ
- ファイルの同期とホットリロードを使用して開発を高速化する。
- Cloud Code で継続的な開発環境を設定する。
- Cloud Code で Kubernetes ログを表示します。