Kubernetes でのデバッグ
JetBrains Rider は、一時的なコンテナーを使用したオンザフライの pod トラブルシューティングと、Telepresence を使用したリモートデバッグという Kubernetes デバッグフローをサポートしているため、IDE を移動せずにさまざまな問題を診断できます。
一時的なコンテナー
JetBrains Rider は、実行中の pods を再起動することなく、一時的なコンテナー(英語)をアタッチすることをサポートしています。これにより、稼働中の Kubernetes 環境をインスペクションし、診断コマンドを実行し、実行中の pod 内で直接問題を調査することができます。
一時的なコンテナーは、既存の pod にデバッグ用に一時的に追加され、アプリケーションコンテナーと並行して実行されます。この目的のため、JetBrains Rider は内部で kubectl debug コマンドを実行します。カスタムデバッグコンテナーをアタッチするか、ping、netstat、wget、top などの一般的なツールをすぐに使用できる軽量の BusyBox イメージを使用することもできます。
pods 実行中のデバッグの詳細については、Kubernetes のドキュメント(英語)を参照してください。
稼働中の pod に BusyBox を接続する
サービスツールウィンドウを開きます。を選択するか、Alt+8 を押します。
実行中の pods をリストするノードを展開し、デバッグする pod を右クリックして、コンテキストメニューからを選択します。
または、必要な pod を選択し、ツールバーの
をクリックして、ドロップダウンから Busybox を添付するを選択します。
実行中の pod にカスタムコンテナーを接続する
サービスツールウィンドウを開きます。を選択するか、Alt+8 を押します。
実行中の pods をリストするノードを展開し、デバッグする pod を右クリックして、コンテキストメニューからを選択します。
または、必要な pod を選択し、ツールバーの
をクリックして、ドロップダウンからカスタムを添付を選択します。カスタムデバッグコンテナーをアタッチするダイアログで、次のフィールドを使用して、一時コンテナーを起動および接続するための
kubectl debugコマンドをカスタマイズします。Pod: ドロップダウンからデバッグする pod を選択します。
ターゲット : 選択した pod 内のターゲットコンテナーを指定します。
イメージ : デバッグに使用するイメージの名前を入力し、候補リストから選択します。
実行可能ファイル: 起動後に一時コンテナー内で実行するシェルの絶対パスを指定します (たとえば、BusyBox の場合は
/bin/sh、Ubuntu の場合は/bin/bash)。オプション : デバッグコンテナーに追加の設定パラメーターを提供します。例については、Kubernetes のドキュメント(英語)を参照してください。

Pod に取り付けるをクリックします。
JetBrains Rider が新しい一時コンテナーを起動し、それを pod に正常に接続すると、コンソールタブが開き、そこでコマンドを実行して pod をインスペクションできるようになります。

BusyBox をアタッチすると、JetBrains Rider は自動的に sh を使用します。カスタムイメージの場合、IDE は「実行可能ファイル」フィールドで指定されたシェルを使用します。
コンテナーが接続されている pod を削除すると、コンテナーは削除されます。
最近のコマンド
一時的なデバッグコンテナーメニューを使用して一時コンテナーをアタッチすると、JetBrains Rider は対応する kubectl debug コマンドを自動的に保存します。後で最近セクションからアクセスして再実行できます。

最近のコマンドを使用して一時コンテナーを起動する
サービスツールウィンドウを開きます。を選択するか、Alt+8 を押します。
実行中の pods をリストするノードを展開し、デバッグ対象の pod を右クリックします。コンテキストメニューから一時的なデバッグコンテナーを選択し、必要な最近のコマンドを選択します。
または、必要な pod を選択し、ツールバーの
をクリックして、ドロップダウンから最近のコマンドを選択します。
最近のコマンドを管理する
最近のコマンドにアクセスします。
設定 / 環境設定ダイアログ(Ctrl+Alt+S)で、 を選択します。
サービスツールウィンドウ(Alt+8)を開きます。実行中の pod を右クリックし、コンテキストメニューからを選択します。
一時的なデバッグコンテナーセクションに移動します。
事前に設定して新しい一時コンテナーをすばやく起動できる新しいコマンドを追加するには、
をクリックします。デバッグパラメーターを追加するダイアログでは、イメージ、実行可能ファイル、
kubectl debugコマンドのオプションを指定できます。最近使用したコマンドからコマンドを削除するには、テーブルでコマンドを選択し、
をクリックします。
既存のコマンドを編集するには、テーブルでコマンドを選択し、
をクリックします。デバッグパラメーターを追加するダイアログで、
kubectl debugコマンドのイメージ、実行ファイル、オプションを変更します。
Telepresence
Telepresence (英語) は、Kubernetes クラスター内のサービスにアクセスし、サービスがローカルのコンピューターで実行されているかのようにデバッグしたり、変更を加えたり、テストしたりできるツールです。
Kubernetes プラグインは Telepresence との統合を提供し、次のことを可能にします。
Telepresence に接続するは、DNS 名によってクラスター内のサービスにアクセスします。
サービスをインターセプトするは、クラスターからローカル環境にトラフィックをルーティングします。
Telepresence に接続する
サービスツールウィンドウを開きます。を選択するか、Alt+8 を押します。
Kubernetes クラスターを右クリックし、Telepresence を接続を選択します。または、ツールバーの
をクリックします。プロンプトが表示されたら、Telepresence デーモンを起動するために必要な管理者アカウントのパスワードを入力します。Windows では、telepresence.exe の実行を許可します。
Telepresence と Traffic Manager をインストールした後、もう一度 Telepresence を接続をクリックします。
クラスターがワークステーション上で実行されているかのように、DNS 名を使用して Kubernetes クラスター内のサービスにアクセスできるようになりました。例: hello-node:9001 へのリクエストを受け入れるアプリケーションがある場合、その名前でアクセスできます。

クラスターからのトラフィックを傍受する
インターセプトを使用すると、Kubernetes クラスター内のサービスに送信されるトラフィックを取得し、ローカルサービスにルーティングできます。
ツールバーで、
( 新規インターセプトの作成 ) をクリックし、次に新規インターセプトの作成をクリックします。
開いたウィンドウのサービスリストで、インターセプトするワークロードを選択します。これは、デプロイ、ReplicaSet、StatefulSet のいずれかになります。
ポートフィールドで、サービスのローカルインスタンスが実行されているポートを指定します。

サービスが正常にインターセプトされた場合は、ローカルでサービスにアクセスし、IDE 機能を使用して、クラスター内で実行されているアプリケーションを試し、デバッグし、プロファイリングすることができます。
Telepresence の終了
Telepresence は一度に 1 つのクラスターと対話するため、別のクラスターに接続する前にテレプレゼンスを停止する必要がある場合があります。テレプレゼンスを終了すると、アクティブな傍受がすべて停止されます。
サービスツールウィンドウを開きます。を選択するか、Alt+8 を押します。
Kubernetes クラスターを右クリックし、Telepresence の終了を選択します。あるいは、ツールバーの「
」をクリックします。
関連ページ:
サービスウィンドウ
サービスツールウィンドウを使用すると、実行 / デバッグ構成、アプリケーションサーバー、データベースセッション、Docker 接続など、ソフトウェア開発中に役立つさまざまなサービスを管理できます。プラグイン開発者は、IntelliJ プラットフォーム API を通じて他のサービスを追加できます。メインツールバーには、すべてのサービスタイプに共通の次のボタンとメニューが含まれています。すべて展開リスト内のすべての項目を展開します。すべて折りたたむリスト内のすべての項目を折りたたみます。グループ化サ...
Helm
Helm は Kubernetes アプリケーションを管理するためのツールです。Helm チャートは、Kubernetes クラスター内で実行する、事前設定されたリソース定義のパッケージです。チャートには、パッケージ(Chart.yaml)の説明と、Kubernetes マニフェストファイルを生成するために使用される 1 つ以上のテンプレートが含まれています。Kubernetes プラグインを有効にするこの機能は、デフォルトで JetBrains Rider にバンドルされて有効になっている Kub...
リモート開発
.NET 開発環境 Rider の使い方や高等テクニック満載の JetBrains 日本語公式ヘルプ。最新の英語版ヘルプ内容が随時反映されます。