使用 Cloud Code for IntelliJ 偵錯 Kubernetes 應用程式

Cloud Code for IntelliJ 可讓您輕鬆地對已部署至 Kubernetes 叢集的應用程式進行偵錯。您可以對本機叢集 (例如 minikube 或 Docker Desktop)、Google Kubernetes Engine,或其他雲端服務供應商上的應用程式進行偵錯。

使用 Cloud Code 的偵錯支援,您就能略過手動設定,例如設定通訊埠轉送、安裝偵錯後端,或使用正確的方式插入特定語言偵錯引數。您只需要具備 Cloud Code 且包含 skaffold.yaml 設定檔在內的 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 會自動新增環境變數 JAVA_TOOL_OPTIONS,並提供適當的 JDWP 設定來啟用偵錯功能。如果 JAVA_TOOL_OPTIONS 已存在,Cloud Code 會使用 JAVA_TOOL_OPTIONS 中指定的現有設定。

Node.js

視應用程式的結構和映像檔建構設定而定,您可能必須協助偵錯工具將本機來源對應至容器中的遠端來源。這樣 Node 偵錯工具才能正確處理中斷點。

您可以透過下列任一方式設定這項功能:

  • 手動設定

    從下拉式選單中選取「Develop on Kubernetes」執行設定,然後按一下「Edit Configurations」。在「Debug」分頁中,設定從本機應用程式來源到遠端容器中來源位置的來源對應。

    在「偵錯」分頁的來源對應部分中選擇來源位置

    設定選項:

    • 檔案/目錄 - 在 Kubernetes 上執行的應用程式本機檔案或目錄。
    • 遠端路徑:在 Kubernetes 容器中執行的檔案或目錄路徑。
  • 自動設定

    您可以選擇將這項對應作業延後至 Cloud Code 執行。啟動偵錯工作階段時,Cloud Code 會嘗試自動推斷這項對應。系統會在對話方塊中顯示推斷的對應關係,每個要偵錯的構件都會顯示一個對話方塊。

    每個成果的遠端路徑對應對話方塊,指定使用的遠端路徑

    設定選項:

    • 本機路徑:要偵錯的構件根目錄本機路徑。
    • 遠端路徑:在 Kubernetes 容器中執行的檔案或目錄路徑。您可以選擇以自己的值覆寫此值。如果按一下「取消」,系統不會套用任何對應。

Go

如要設定應用程式以進行偵錯,應用程式必須是以 Go 模組為基礎,並在容器中設定其中一個標準 Go 執行階段環境變數 (例如 GODEBUGGOGCGOMAXPROCSGOTRACEBACK),以識別為 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 安裝位置。請參閱「偏好設定」>「工具」>「Cloud Code」>「依附元件」

  • 已設定 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」(Python 解譯器),或在 Mac OS X 中依序前往「PyCharm」>「Preferences」(偏好設定) >「Project」(專案) >「Python Interpreter」(Python 解譯器),然後新增 Python 解譯器。

詳情請參閱 Skaffold 偵錯說明文件

對應用程式進行偵錯

  1. 如要在 Kubernetes 叢集上以偵錯模式啟動開發週期,請按一下「Develop on Kubernetes」「執行動作」圖示 的偵錯動作圖示。

    在偵錯模式下啟動 Kubernetes 叢集的開發週期

    持續開發週期會以偵錯模式啟動。

    Cloud Code 會連結偵錯工作階段:

    已連結 Kubernetes 偵錯工具

  2. 對本機程式碼偵錯的同時,您可以如常執行所有工作,例如設定中斷點及逐步完成程式碼,只是多了對使用中的 Kubernetes 叢集進行偵錯的附加優勢。

    Kubernetes 偵錯工具工作階段

  3. 如要結束偵錯工作階段,請按一下「在 Kubernetes 上開發」執行設定旁的停止圖示。

後續步驟

取得支援

如要在 IntelliJ IDE 中提供意見回饋或回報問題,請依序前往「Tools」 >「Cloud Code」 >「Help / About」 >「Submit feedback or report an issue」,在 GitHub 回報問題。