Kubernetes でのデバッグ
JetBrains Rider は、Kubernetes の次のデバッグフローをサポートしています。一時的なコンテナーによるオンザフライの pod トラブルシューティングや、Telepresence を使ったリモートデバッグが可能で、IDE から離れることなくさまざまな問題を診断できます。
Kubernetes プラグインを有効化する
この機能は、 Kubernetesプラグインに依存しており、JetBrains Rider にはデフォルトでバンドルされて有効化されています。 関連機能が利用できない場合は、プラグインを無効化していないことを確認してください。
Ctrl+Alt+S を押して設定を開き、 を選択します。
インストール済み タブを開き、 Kubernetes プラグインを見つけて、プラグイン名の横にあるチェックボックスを選択します。
一時的なコンテナー
JetBrains Rider は、実行中の pod を再起動せずに 一時的なコンテナーをアタッチできます。 これにより、稼働中の 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 を右クリックします。 コンテキストメニューから Ephemeral デバッグコンテナー を選択し、必要な最近のコマンドを選択します。
または、必要な 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 の終了 を選択します。 あるいは、ツールバーの「
」をクリックします。