Kubernetes でのデバッグ
PyCharm は、一時的なコンテナーを使用したオンザフライの pod トラブルシューティングと、Telepresence を使用したリモートデバッグという Kubernetes デバッグフローをサポートしているため、IDE を移動せずにさまざまな問題を診断できます。
一時的なコンテナー
PyCharm は、実行中の pods を再起動することなく、一時的なコンテナー(英語)をアタッチすることをサポートしています。これにより、稼働中の Kubernetes 環境をインスペクションし、診断コマンドを実行し、実行中の pod 内で直接問題を調査することができます。
一時的なコンテナーは、既存の pod にデバッグ用に一時的に追加され、アプリケーションコンテナーと並行して実行されます。この目的のため、PyCharm は内部で 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 に取り付けるをクリックします。
PyCharm が新しい一時コンテナーを起動し、それを pod に正常に接続すると、コンソールタブが開き、そこでコマンドを実行して pod をインスペクションできるようになります。

BusyBox をアタッチすると、PyCharm は自動的に sh を使用します。カスタムイメージの場合、IDE は「実行可能ファイル」フィールドで指定されたシェルを使用します。
コンテナーが接続されている pod を削除すると、コンテナーは削除されます。
最近のコマンド
一時的なデバッグコンテナーメニューを使用して一時コンテナーをアタッチすると、PyCharm は対応する 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 の終了を選択します。あるいは、ツールバーの「
」をクリックします。
インターセプションを使用してアプリケーションを実行する
PyCharm では、1 回のクリックでローカルアプリケーションを実行し、同時に Kubernetes クラスター内のサービス宛てのトラフィックをこのローカルアプリケーションにリダイレクトできます。
これは、Kubernetes クラスターへのトンネル(Telepresence インターセプト)と、実行構成への起動前タスクとして追加するを設定することで実現されます。この実行構成を実行するたびに、PyCharm は Telepresence インターセプトを作成し、リモートアプリケーションをローカルで実行しているかのようにデバッグできるようになります。
実行構成にインターセプションを追加する
以下を確認してください:
サービスの元のインスタンスが Kubernetes クラスターにデプロイされて実行され、そのローカルインスタンスのソースコードがエディターで開かれます。
PyCharm インスタンスが Kubernetes クラスターに接続されています。
メインクラス宣言の近くのガターで
をクリックし、リモートデバッグ用のトンネルを追加を選択します。このアクションは、PyCharm に少なくとも 1 つのクラスターが接続されている場合に使用できます。

あるいは、アプリケーションの実行 / デバッグ構成がすでに存在する場合は、実行ウィジェットで
をクリックし、リモートデバッグ用のトンネルを追加を選択します。
開いた実行構成に Kubernetes トンネルを追加するウィンドウで、クラスターと名前空間を選択し、クラスターに接続をクリックします。プロンプトが表示されたら、Telepresence デーモンを起動するために必要な管理者アカウントのパスワードを入力します。
クラスターに正常に接続されたら、インターセプトパラメーターを構成します。
サービスリストで、インターセプトするワークロードを選択します
ポートフィールドで、サービスのローカルインスタンスが実行されているポートを指定します。
必要に応じて、
telepresence interceptコマンドに追加のオプションを指定します。

Telepresence コマンドの出力を確認する場合は、出力セクションを展開します。Telepresence への接続中にエラーが発生した場合、このセクションは自動的に展開されます。
「構成を保存」をクリックします。インターセプトパラメーターを確認するために、PyCharm はインターセプトを作成してそのままにします。
インターセプトパラメーターは、新しい実行構成の起動前タスクとしてデバッグ用のトンネルを追加として保存されます。他の実行構成と区別するために、この実行構成名には (Telepresence) 接尾辞が含まれます (例: MyApp (Telepresence))。
これで、アプリケーションを実行し、そのリモートバージョンをインターセプトする準備が整いました。
インターセプションを使用してアプリケーションを実行する
実行ウィジェットで、(Telepresence) 接尾辞を持つ実行構成を選択します。

をクリックして実行するか、
をクリックしてデバッガーセッションを開始します。
これにより、ローカルアプリケーションが実行され、同時に上記で指定したパラメーターを使用して telepresence intercept コマンドが実行されます。
Telepresence は、クラスター内のサービスに送信されるすべてのトラフィックをインターセプトし、ローカルアプリケーションにルーティングするようになりました。インターセプトされたサービスをローカルでコーディングおよびデバッグできます。
サービスツールウィンドウには、Telepresence インターセプションノードに作成されたインターセプトが表示されます。Kubernetes クラスターのルートノードには、生成されたテレプレゼンスコマンドと関連ログも表示されます。

このアプリケーションを停止すると( をクリックして)、PyCharm も傍受を停止します(
telepresence leave)。
関連ページ:
サービスツールウィンドウ
サービスツールウィンドウを使用すると、実行 / デバッグ構成、データベースセッション、Docker 接続など、ソフトウェア開発中に役立つさまざまなサービスを管理できます。プラグイン開発者は、IntelliJ プラットフォーム API を通じて他のサービスを追加できます。メインツールバーには、すべてのサービスタイプに共通の次のボタンとメニューが含まれています。すべて展開リスト内のすべての項目を展開します。すべて折りたたむリスト内のすべての項目を折りたたみます。グループ化サービスのリストを整理する方...
Kubernetes
Kubernetes は、デプロイ、スケーリング、コンテナー化されたアプリケーションの管理のためのコンテナーオーケストレーションエンジンです。PyCharm 用の Kubernetes プラグインをインストールして有効にし、Kubernetes クラスターを管理するための次の機能を追加します。Kubernetes リソース設定ファイルのコーディング支援。Helm チャートとテンプレートのコーディング支援。詳細については、Helm 専用ページを参照してください。カスタムリソース定義(CRD)仕様を使用した...
Space
Space code コラボレーションプラットフォームのサポートは、PyCharm にバンドルされていません。プラグインのインストールの説明に従って、JetBrains Marketplace から Space プラグインをインストールできます。Space サポートに関するドキュメントは、PyCharm ヘルプの以前のバージョンで参照できます。2024 年 10 月 08 日 Kubernetes でのデバッグ TextMate