使用 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 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 会自动添加具有相应 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) | 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 中提交反馈或报告问题,请前往工具 > Cloud Code > 帮助 / 简介 > 提交反馈或报告问题,在 GitHub 上报告问题。