使用 Cloud Code for IntelliJ 调试 Kubernetes 应用

Cloud Code for IntelliJ 可让您轻松调试已部署到 Kubernetes 集群的应用。您可以在本地集群(如 Minikube 或 Docker Desktop)、Google Kubernetes Engine 或任何其他云上调试应用。

借助 Cloud Code 的调试支持,您可以跳过手动设置,例如设置端口转发、安装调试后端或以正确的方式注入特定语言的调试参数。您只需拥有一个支持 Cloud Code 的 Kubernetes 应用,该应用包含 skaffold.yaml 配置文件。

借助 Cloud Code,您还可以在更改和迭代源代码时调试应用

支持的 IDE

下表列出了 Cloud Code 支持进行调试的语言和 IDE。下表还列出了所需的插件(如适用):

语言 支持的 IDE 和版本 所需插件
Java IntelliJ IDEA Ultimate 版 不适用
IntelliJ IDEA 社区 不适用
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 会自动添加具有相应 JDWP 配置的环境变量 JAVA_TOOL_OPTIONS 以启用调试。如果 JAVA_TOOL_OPTIONS 已存在,Cloud Code 将使用 JAVA_TOOL_OPTIONS 中指定的现有设置。

Node.js

根据应用结构及其映像构建配置,您可能需要帮助调试程序将本地源映射到容器中的远程源。这样,节点调试程序就能正确处理断点。

您可以通过以下方式之一进行配置:

  • 手动配置

    从下拉列表中选择 Develop on Kubernetes 运行配置,然后点击 Edit Configurations。在 Debug 标签页上,配置从本地应用源到远程容器中源位置的源映射。

    在“调试”标签页的源映射部分中选择源位置

    配置选项:

    • 文件/目录 - 在 Kubernetes 中运行的应用的本地文件或目录。
    • 远程路径 - 在 Kubernetes 容器中运行的文件或目录的路径。
  • 自动配置

    您可以选择推迟到 Cloud Code 的映射。当您启动调试会话时,Cloud Code 会尝试自动推断此映射。推断的映射将以对话框的形式显示;每个要调试的工件一个对话框。

    每个工件的远程路径映射对话框,指定正在使用的远程路径

    配置选项:

    • 本地路径 - 要调试的工件的根目录本地路径。
    • 远程路径 - 在 Kubernetes 容器中运行的文件或目录的路径。 您可以选择将其替换为自己的值。如果点击 Cancel,则不会应用映射。

Go

如需为您的应用配置调试,您的应用必须是基于 Go 模块的应用,并通过设置标准 Go 运行时环境环境变量(例如 GODEBUGGOGCGOMAXPROCSGOTRACEBACK)来判定基于 Go。GOTRACEBACK=single 是 Go 的默认设置,GOTRACEBACK=all 是常用配置。

(可选,但不建议)您的应用应使用 -gcflags='all=-N -l' 选项进行构建,以停用优化。Skaffold 配置文件是用于此目的的实用选项,您可以在构建/部署标签页下,使用“运行”配置中的部署配置文件字段进行设置。

Python

要配置应用以进行调试,请确保满足以下前提条件:

  • 使用兼容的 IDE、版本和插件

    如需了解兼容的 IDE、版本和插件,请参阅支持的 IDE

  • Skaffold 版本为 1.25.0 或更高版本

    您可以允许 Cloud Code 管理您的依赖项或指向本地 Skaffold 安装。请查看 Preferences > Tools > Cloud Code > Dependencies

  • 已配置 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(对于 Mac OS X,转到 PyCharm > Preferences > Project > Python Interpreter),然后添加 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 上报告问题,或者在 Stack Overflow 上提问。