Cloud Code では、Node.js、Python、Go、Java、.NET の Kubernetes Pod にデバッガを接続できます。必要なのは、デバッグ可能なコンテナと cloudcode.kubernetes
タイプのアタッチ構成のみです。
Kubernetes Pod へのアタッチと Kubernetes アプリケーションのデバッグの違いについては、Kubernetes Pod へのアタッチと Kubernetes アプリケーションのデバッグをご覧ください。
コンテナの設定
デバッグ用のコンテナを準備するには、使用している言語の手順に従います。
Node.js
--inspect=<debugPort>
で Node.js アプリケーションを起動します。debugPort
はアタッチ構成から取得します。例:CMD ["node", "--inspect=9229", "index.js"]
Python
Go
Java
- JVM がマシンにインストールされていることを確認します。
次のオプションで Java アプリケーションを起動します。
debugPort
はアタッチ構成から取得します。-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=
,quiet=y たとえば、Java アプリケーションをデバッグモードで起動し、ポート
debugPort
でアタッチをリッスンします。ENTRYPOINT ["java","-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=<debugPort>,quiet=y", "-jar", "my-app-1.0.jar"]
.NET Core
vsdbg
(Microsoft の .NET Core コマンドライン デバッガ)が Kubernetes コンテナに インストールされていることを確認します。次に例を示します。
RUN apt-get update
&& apt-get install -y --no-install-recommends unzip
&& apt-get install -y procps
&& rm -rf /var/lib/apt/lists/*
&& curl -sSL https://aka.ms/getvsdbgsh | bash /dev/stdin -v latest -l /vsdbg
アタッチ構成の設定
デバッグ可能なコンテナにアタッチするには、cloudcode.kubernetes
タイプのアタッチ構成が必要です。
.vscode/launch.json ファイルがないプロジェクト
プロジェクトの .vscode
フォルダに launch.json ファイルがない場合は、[デバッグ] パネルを使用して追加できます。
[デバッグ] パネルに移動し(アクティビティ バーの [デバッグ] ビューアイコン
を使用)、プルダウン メニューから [構成を追加] を選択します。
環境として [Cloud Code: Kubernetes] を選択します。
Attach to Kubernetes Pod
オプションを選択対応するプログラミング言語を選択します。
これにより、プロジェクトの
launch.json
ファイルが作成され、開かれて、接続構成が作成されます。プロジェクトの構成属性に合わせて、このファイル内の構成属性を更新できます。構成属性の詳細については、構成属性をご覧ください。
.vscode/launch.json ファイルがあるプロジェクト
既存の .vscode/launch.json に新しいアタッチ構成を追加するには:
- launch.json ファイルを開きます。
- Intellisense スニペットを起動するには、[Add Configuration] をクリックします。
- 使用する言語の [Cloud Code: Attach to Kubernetes Pod] スニペットを選択します。
- これにより、アタッチ構成が追加されます。これで、この構成の属性をプロジェクトの属性に合わせて更新できます。構成属性の詳細については、こちらの表をご覧ください。
構成属性
属性 | 説明 |
---|---|
debugPort | コンテナで使用されるデバッグポート。 |
podSelector | デバッグ Pod の選択に使用される Key-Value ペアです(詳細については、セレクタのガイドをご覧ください)。典型的な podSelector の場合、次のようになります。
|
localRoot | デバッグするプログラムが存在するローカル ディレクトリのパス。 デフォルトは ${workspaceFolder} です。 |
remoteRoot | デバッグするプログラムが存在するリモート ディレクトリの絶対パス(Kubernetes コンテナ上のパス)。 |
Kubernetes Pod へのデバッガのアタッチ
構成とコンテナを設定したら、次の手順を行います。
- デバッグビュー
を開きます。
F5
を押して、構成を選択して起動します。localhost:${debugPort}
は、デバッグ中にコンテナのdebugPort
にポート転送されます。
- これで、デバッグ セッションが正常に設定されました。
- ブレークポイントの設定やコードのステップ実行など、ローカルコードのデバッグ時に普段行うすべてのタスクを実行できるようになります。
変数とスタック情報を調べるには、デバッグ サイドバーを使用します。デバッグ セッションをインタラクティブに操作するには、下部ペインのデバッガにあるデバッグ コンソールを使用します。
デバッグ セッションを終了するには、デバッグ ツールバーで
[停止] をクリックします。
Kubernetes Pod へのアタッチと Kubernetes アプリケーションのデバッグ
Kubernetes Pod へのアタッチ | Kubernetes アプリケーションのデバッグ |
---|---|
単一の Kubernetes Pod をデバッグします。 | アプリケーション内のすべてのデバッグ可能なコンテナをデバッグします。 |
デバッグする前に、アプリケーションを Kubernetes Pod で実行する必要があります。 | Kubernetes クラスタでアプリケーションを実行し、デバッガをアタッチします。 |
タイプ「cloudcode.kubernetes」の構成(.vscode/launch.json)を使用し、「attach」をリクエストします。 | タイプ「cloudcode.kubernetes」の構成(.vscode/launch.json)を使用し、「launch」をリクエストします。 詳細については、構成の開始とアタッチをご覧ください。 |
サンプル構成:
{ "name": "Attach to Kubernetes Pod (NodeJS)", "type": "cloudcode.kubernetes", "request": "attach", "language": "Node", "debugPort": 9229, "podSelector": { "app": "hello-world" }, "localRoot": "${workspaceFolder}", "remoteRoot": "/app" } |
サンプル構成:
{ "name": "Run/Debug on Kubernetes", "type": "cloudcode.kubernetes", "request": "launch", "skaffoldConfig": "${workspaceFolder}/skaffold.yaml", "watch": true, "cleanUp": true, "portForward": true } |
この構成を使用してアプリケーションを実行することはできません。 | この構成を使用して、アプリケーションを実行またはデバッグできます。 |
この構成は言語固有のものです | この構成は言語に依存しません |
専用のコマンドを使用しません | Debug on Kubernetesコマンド |
ウォッチモードが使用できないため、変更後にデバッガを手動で再起動します。 | ウォッチモードを使用すると、変更を保存した後に Cloud Code がデバッガを再起動できます。 |