Kubernetes
Kubernetes 是一个用于部署、扩展和管理容器化应用程序的容器编排引擎。 安装并启用 GoLand 的 Kubernetes 插件,以添加以下功能来管理您的 Kubernetes 集群:
Kubernetes 资源配置文件 的编码辅助。
针对 Helm 图表和模板的代码辅助。 有关更多详细信息,请参阅 专用的 Helm 页面。
使用自定义资源定义(CRD)规范验证自定义资源。
对 Kustomize 文件的编码支持:字段和本地文件路径补全、快速文档以及在 Kustomize 文件和补丁之间导航。 打开的Kustomize补丁顶部的编辑器中会显示相关Kustomize文件的列表。
从 GoLand 与集群交互:使用 服务 工具窗口查看 Kubernetes 集群的所有资源,跳转到相关资源定义,查看运行在 Pod 上的容器日志等。
该 Kubernetes 插件支持 Kubernetes 版本 1.26 到 1.34(您可以 选择适用的版本)。
安装 Kubernetes 插件
此功能依赖于 Kubernetes 插件,您需要安装并启用。
按下 Ctrl+Alt+S 打开设置,然后选择 。
打开 Marketplace 选项卡,找到 Kubernetes 插件,然后点击 安装 (如果提示,请重启 IDE)。
指定 kubectl 的自定义路径
GoLand 使用由 PATH 环境变量确定的默认 kubectl(以及 如果您使用 helm )可执行文件。
如果您将 kubectl 安装在自定义目录中,您可以手动指定其路径。
在 设置 对话框(Ctrl+Alt+S )中,选择 。
在 kubectl 可执行文件路径 字段中,指定 kubectl 可执行文件的路径。
请点击 测试 查看文件位置。 如果未找到,您可以手动检查文件位置,或点击 安装 ,GoLand 将下载并安装缺失的软件。

使用自定义 Kubernetes 配置文件
有关群集的信息存储在 kubeconfig 文件中。 GoLand 会检测默认的 kubeconfig 文件,这个文件通常位于 $HOME/.kube/config (此位置可以通过 KUBECONFIG 环境变量更改)。 如果您希望 GoLand 从自定义 kubeconfig 文件而不仅仅是从默认文件获取有关集群的信息,您可以在 IDE 设置中指定它们。 您可以全局应用它,也可以为每个项目使用不同的文件。
在 设置 对话框(Ctrl+Alt+S )中,选择 。
在 配置 下,点击
并指定到
kubeconfig文件的路径。如果您想在所有项目中使用配置文件,请在 全局 列中选择 范围。 要仅在当前项目中使用,请保留 项目 范围。
当您添加文件时,GoLand 会验证其语法并报告错误(如果有)。

配置 Kubernetes API 版本
GoLand 提供配置键值的 代码补全功能、通过边栏图标导航到相关的选择器和定义、检查过时的值和必需键的专门检查,以及其他辅助功能。 这些取决于您正在使用的 API 版本。 Kubernetes 插件支持 Kubernetes 版本 1.26 到 1.34。 默认情况下,GoLand 会将其设置为最新版本。 但是,如果您的资源使用的是较早的版本,您可以更改它。
在 设置 对话框(Ctrl+Alt+S )中,选择 语言 & 框架 | Kubernetes。
根据需要更改 Kubernetes API 版本 和 Kustomize 版本 选项。
资源配置文件
Kubernetes 插件为 YAML 中的资源配置文件提供了丰富的支持,而对 JSON 格式仅提供基本支持。
GoLand 通过以下必填字段识别 Kubernetes 资源配置文件:
apiVersion:标识对象表示的版本化模式kind:标识资源类型(例如,Service、Pod、Deployment等)
如果这两个字段都出现在 YAML 或 JSON 文件中,GoLand 将使用相应的 Kubernetes 图标标记该文件并启用所有可用功能。
创建资源文件
使用 GoLand,您可以快速创建 Kubernetes 中一些最最受欢迎的资源的配置文件。
在 项目 工具窗口 Alt+1 中,右键点击一个文件夹,选择 新建 或按 Alt+Insert ,然后选择 Kubernetes 资源。
在 名称 字段中,输入您的资源名称并从列表中选择文件模板。

这将基于选定的 file template创建一个包含其内容的新文件。
或者,在 YAML 文件中,您可以使用预定义的 实时模板 ,例如:
kconfigmap:Kubernetes ConfigMapkcronjob:Kubernetes 定时任务kdeployment:Kubernetes 部署kingress:Kubernetes Ingresskpod:Kubernetes Podkresource:从零开始的 Kubernetes 资源kservice:Kubernetes 服务

当您在编辑器中打开 Kubernetes 资源文件时,GoLand 会显示 内联提示 和包含最常用操作的浮动工具栏,包括:
在浮动工具栏中,您可以:
选择当前集群和命名空间
应用更改并将其提交到当前集群
删除资源
将更改与集群版本进行比较
从集群重新加载内容

用于检查 已部署资源状态 的内联提示
用于 显示并复制引用的 Secret 值 的内联提示
用于 转发端口 的内联提示

配置浮动工具栏的显示方式
您可以配置在编辑器中显示浮动工具栏的时机。
按下 Ctrl+Alt+S 打开设置,然后选择 。
使用 在编辑器中显示浮动工具栏 选项选择浮动工具栏的出现时机:
始终显示
在鼠标移动时显示
不要显示
或者,您可以右键点击浮动工具栏并选择所需选项。
禁用 Kubernetes 模式验证
GoLand 根据 Kubernetes API 模式验证您的 Kubernetes 文件。 这包括检查其所需的关键字或可能的资源类型。
如果您的文件包含 apiVersion 和 kind ,但它不是一个 Kubernetes 文件,您可以禁用此类验证。 您可以在 中抑制检查并更改其范围和严重性。 或者,您可以使用特殊指令标记文件以禁用其中的验证:
在文件开头添加
# nonk8s。另外,如果您已有关于未知资源的警告,右键点击 问题 工具窗口中的警告并选择 。
管理您的集群
使用 服务 工具窗口查看您的集群,在命名空间之间切换并修改集群资源。
添加集群
要与 Kubernetes 集群交互,请在 服务 工具窗口中添加集群。
打开 服務工具窗口:选择 或按 Alt+8。
在 服务 工具窗口中右键点击一个 Kubernetes 节点并选择 添加集群。 或者,点击
并选择 。
接下来,选择要添加的 Kubernetes 集群的来源:
来自默认目录 :从默认位置获取集群(通常为
$HOME/.kube/config)。来自自定义 kubeconfig :从您的计算机中选择任意 kubeconfig 文件。
粘贴 kubeconfig 内容: 将 kubeconfig 内容粘贴到打开的文本区域中。

在打开的 添加集群 窗口中,选择您要添加的集群并点击 添加集群。

添加的 Kubernetes 集群将在 服务 工具窗口中可用。 您可以通过右键点击一个集群并选择 在新标签页中打开 ,将每个集群打开在单独的选项卡中。
要实时监控集群资源,您可以 连接到集群。
连接到集群
连接到集群以在 IDE 中与其交互:跟随日志、预览资源、查看其配置文件,并在修改时获取实时更新。 如果未连接到集群,您可以在编辑器中 修改其资源。

编辑 kubeconfig
kubeconfig 文件包含有关集群、用户、命名空间和认证的信息。
打开 服務工具窗口:选择 或按 Alt+8。
选择一个集群,然后点击工具栏上的
(在编辑器中打开kubeconfig 文件)。 当您右键点击 服务 工具窗口中的任意 Kubernetes 对象时,此操作也可用。
这将在编辑器的新选项卡中打开 kubeconfig 文件。 要更改此操作打开的默认文件,您可以在 Path to kubeconfig file中指定另一个文件的路径。
当您更改 kubeconfig 文件时,配置会自动重新加载。 您还可以手动重新加载,或者通过右键点击集群或任何 Kubernetes 对象来禁用自动重新加载,然后选择 。

在命名空间之间切换
Kubernetes 命名空间允许您在集群内逻辑隔离资源。 借助 GoLand,您可以快速切换命名空间。
打开 服務工具窗口:选择 或按 Alt+8。
右键点击您的集群或任何资源,选择 命名空间 (或点击工具栏上的
),然后选择所需的命名空间。
要查看所有命名空间的资源,请选择 所有命名空间。

选择当前集群
当前集群是指设置为默认值的集群,用于在编辑器和 项目 工具窗口中与资源交互。
当您在本地修改或创建 资源文件 时,您可以通过点击 或使用 浮动工具栏 选择要应用该资源的集群。 您也可以提前选择它。
打开 服務工具窗口:选择 或按 Alt+8。
右键点击集群并选择 将集群设置为当前集群。

或者,选择一个集群并点击工具栏上的
。
此设置也可以在 IDE 设置中的 下找到。
在集群中创建资源
在 创建资源文件 之后,您可以在集群中创建相应的资源。
在编辑器中打开所需的资源文件。 如果未设置当前集群,请使用 浮动工具栏 进行选择。

如有必要,您还可以从列表中选择命名空间。
点击
将更改应用到当前集群和命名空间。
修改集群资源
查看资源详情
GoLand 可让您快速查看 Kubernetes 资源详情,无需手动运行任何命令。
在 服务 工具窗口中,选择一个资源以查看其详情。
GoLand 会在编辑器中直接显示已部署的 Kubernetes 资源的实时状态。 例如,当您打开 Deployment 清单时,状态指示器会显示在
replicas字段旁,显示当前正在运行、挂起或失败的 Pod 数量。
您可以在相应清单中的 名称 字段旁检查各个 Pod 和 Job 的状态。
如果发生错误且资源失败,GoLand 会显示 打开日志 链接,帮助您快速导航到描述该问题的相关日志条目。

删除资源
您可以通过以下任何一种方式删除资源:
在 服务 工具窗口中,右键点击资源并选择 删除。
在 服务 工具窗口中,选择一个资源并在工具栏上点击
(删除资源)。
如果在编辑器中打开了该资源 YAML 文件,请在浮动工具栏上选择当前集群并点击
。
如果已打开该资源 YAML 文件,请在编辑器的任意位置点击鼠标右键;如果浮动工具栏上未选择集群,请选择 删除(当前集群未配置) ,否则请选择 从 集群 "cluster_name" 和 命名空间 "namespace_name" 中删除。
转发端口
在 Kubernetes 中使用端口转发,您可以将计算机上的本地端口的流量重定向到 Kubernetes pod 上的端口。 GoLand 允许您管理端口转发:您可以将一个或多个本地端口转发到远程端口,查看集群中所有活动的转发会话(在 GoLand 中建立),停止并重新启动转发会话。
您可以通过以下任一方式配置端口转发:
打开 服務工具窗口:选择 或按 Alt+8。 右键点击目标 pod 并选择 转发端口。
点击 Kubernetes 清单中的 转发端口 内联提示。 GoLand 会在指定目标端口时显示内联提示(例如作为
containerPort的值)。
在 转发端口 对话框中:
在 地址 字段中列出要监听的地址。 使用逗号分隔多个值。
在 端口 字段中,以
<local port>:<remote port>格式指定端口。 例如,8888:5000将侦听本地端口8888并将数据转发至/从远程端口5000。GoLand 会根据对应 Kubernetes 清单中定义的值自动建议端口映射。 如果清单中指定的端口在本地计算机上已被占用,GoLand 会逐步增加建议的值,直到找到可用端口。
如果指定的值小于
1024,则会在建议的本地端口值上加上 8000。如果您手动指定的本地端口当前正被使用,GoLand 会在开始转发之前通知您。
单击 转发。

管理端口转发会话
要查看所有活动的端口转发会话,请在 服务 工具窗口中,展开 Kubernetes 集群下的 。

要终止端口转发会话,请右键点击它并选择 停止端口转发 ,或点击工具栏上的
。
要重新启动端口转发会话,请右键点击它并选择 重新启动端口转发 ,或点击工具栏上的
。
创建 Secrets
借助 GoLand ,您可以快速创建 Kubernetes Secrets。
打开 服務工具窗口:选择 或按 Alt+8。
选择一个集群并展开 配置。
右键点击 Secret 节点并选择 创建新密钥。 或者,选择 Secret 节点并点击工具栏上的
。
在打开的 创建新密钥 窗口中,指定秘密名称、类型和命名空间。 为了加速秘密创建,GoLand 会根据所选 secret type 添加所需的数据或注释键。
在 数据 和 注解 部分,点击 值 并输入现有键的值,或者您可以点击
并选择提供值的方式:
手动添加 以手动输入数值。
使用文件数据 选择一个文件(例如,SSH 密钥文件或 Docker config.json ),以将文件内容用作值。

您可以在 服务 工具窗口中查看所有的 Secrets,位于 配置 下面。 要编辑一个 Secret,右键点击它并选择 编辑密钥 ,或者点击工具栏上的 。
创建 Secret 后,您可以在 Pod 配置文件的 secretName 字段中开始输入其名称。 这将为集群或您的项目中可用的 Secret 名称调用补全。
在处理引用 Secret 的 YAML 文件时, GoLand 会提供 内联提示 ,其中包含可帮助您快速检查或复用 Secret 值的操作。
显示: 在弹出窗口中显示所引用的 Secret 的解码值。
复制: 将解码后的 Secret 值复制到您的剪贴板以供临时使用。

这两种操作会访问并显示 Secret 中定义的真实值,而不是 YAML 中的编码值或占位符文本。
如果您的账户权限不足,点击该按钮会显示相应的工具提示。 这可防止受限数据意外泄露。
请保持您的集群信息为最新
若要使 GoLand 与您的集群保持同步,请执行以下操作:
重新加载配置
默认情况下,当您更改 kubeconfig 文件时,配置会自动重新加载。 您仍然可以手动重新加载它。
打开 服務工具窗口:选择 或按 Alt+8。
右键点击集群并选择 。
如果您想禁用自动重新加载,请清除 自动重新加载配置 选项。
您还可以在 IDE 设置(Ctrl+Alt+S )中检查此设置,在 中。
手动刷新集群资源
如果您已 连接到集群 ,您对其资源所做的任何更改都会自动反映在 IDE 中。 如果由于 集群角色 的权限不足,您的资源未自动更新,则 服务 工具窗口中会显示一条关于禁止自动刷新资源的消息。 在这种情况下,您可以手动刷新资源。
打开 服務工具窗口:选择 或按 Alt+8。
右键点击一组资源并选择 刷新 或点击工具栏上的 Ctrl+F5。
查看日志
使用 GoLand,您可以查看集群日志和选定资源的日志。 您可以按日期、来源和日志消息中的特定值筛选日志。
在编辑器中打开资源日志
打开 服務工具窗口:选择 或按 Alt+8。
通过以下方式之一选择日志来源:
要查看所有资源的日志,选择您的 Kubernetes 集群并点击
(关注日志 )位于 服务 工具窗口的工具栏上。

要查看特定资源的日志,选择该资源并点击
(关注日志 )位于 服务 工具窗口的工具栏上。 或者,右键点击一个资源并选择 关注日志。
如果 pod 中存在多个容器,从显示的容器列表中选择您想要跟随日志的容器。

这将实时跟踪所选资源的日志,并带有 --follow=true 标志,并在新的编辑器标签中打开它们。
管理日志
查看集群日志或选定资源的日志时,您可以使用主工具栏(1)或浮动工具栏(2)处理日志输出。 浮动工具栏提供对常用操作的快速访问。

(滚动到末尾 ):跳转到日志输出的末尾。
(自动换行 ):当编辑器调整大小时启用日志项的软换行。
(下载已筛选的日志 ):下载当前在编辑器中打开的日志,并考虑任何 已应用的筛选器。
(清除显示的日志 ):清除编辑器中显示的日志条目。 此操作仅影响当前视图。 当您重新打开相同资源的日志时,日志条目将重新显示。
筛选日志
一旦您 打开日志 ,您可以使用编辑器顶部的以下筛选器优化日志列表:
(打开模式匹配 ):输入或选择您希望日志数据匹配的值或模式。 例如,如果您的日志中存在级别信息,您可以选择
warn、error或其他级别值,仅显示与这些级别对应的日志。(选择日志源 ):选择您希望显示日志的集群资源。
(按日期和时间筛选 ):选择您希望显示日志的时间范围。
(选择日志字段 ):选择是否显示日志的时间戳、来源和消息。
在编辑器标签顶部的输入字段中,输入日志消息中的值。 点击
使用正则表达式,点击
使搜索区分大小写。
(清除所有日志筛选器 ):丢弃所有已应用的筛选器(来源除外)并显示所有日志。

下载单个容器的日志
打开 服務工具窗口:选择 或按 Alt+8。
选择一个资源并点击右侧工具栏上的
(下载日志 )以保存日志文件。
配置日志保存选项
您可以在 IDE 设置(Ctrl+Alt+S )中的 下配置日志保存选项:
如果您想将日志保存在 Scratches 以外的位置,请在 下载日志的路径 中指定一个目录。 或者选择 下载前询问日志的保存位置 ,以便每次保存日志时提示您选择位置。
如果您希望在文件名中包含日志时间戳,请选择 将时间戳附加到日志文件名。
自定义资源定义支持
如果您使用 自定义资源 扩展 Kubernetes 集群,GoLand 可以通过 自定义资源定义 (CRD) 规范对它们进行验证。
指定 CRD 规格路径
按下 Ctrl+Alt+S 打开设置,然后选择 。
点击
,然后选择本地 CRD 文件或指定一个 URL。 然后点击 确定(O)。
使用 和
重新排列 CRD 文件列表。 当存在冲突的定义时,此项会定义优先级:GoLand 将使用最低优先级的定义,如果它在多个文件中定义。
默认情况下,CRD 仅应用于当前项目。 如果您希望某个 CRD 在您使用此 IDE 实例打开的任意项目中可用,请将 作用域: 选项更改为 IDE。
要从正在运行的 Kubernetes 集群加载 CRD,请启用 使用活动集群中的API 架构(如果可用)。
您可以在 Kubernetes 节点下的 服務 工具窗口中查看当前集群的 CRD,包括其所有应用资源。
Kubernetes 插件支持以下类型的 CRD 文件:
YAML 中的 CustomResourceDefinition 文件
以下示例展示了一种简单的 CustomResourceDefinition规范,用于一种自定义资源 stable.example.com/v1 的类型 CronTab。 标识资源的必填字段是 metadata.name、 spec.group、 spec.versions 和 spec.names。
OpenAPI v2.0 模式(JSON格式)
以下示例展示了一个简单的 OpenAPI v2.0模式,其中包含了自定义资源 sample/v1 的 Config 的 CRD 规范。 自定义资源的根定义必须包含 x-kubernetes-group-version-kind 字段,并指定组、版本和种类。 在此示例中, root.Definition 对象使用 build 属性来引用 some.Definition 对象。
CRD 校验限制
GoLand 不支持以下 OpenAPI v3 模式功能:
multipleOfmaximumexclusiveMaximumminimumexclusiveMinimummaxLengthminLengthpatternmaxItemsminItemsuniqueItemsmaxPropertiesminPropertiesallOfoneOfanyOfnotformatdefaultnullablereadOnlywriteOnlyxmlexternalDocsexampledeprecated
提高效率的提示
如果您经常使用此处描述的功能,以下提示可能会对您有所帮助:
分配快捷键
您可以为 Kubernetes 操作分配一个键盘快捷键。
在 设置 对话框(Ctrl+Alt+S )中,选择 按键映射。
在搜索字段中输入
kubernetes,然后双击一个操作以为其设置快捷方式。
或者,您可以使用 查找操作 对话框 Ctrl+Shift+A ,输入所需的操作,然后按 Alt+Enter。
例如,您可以分配一个快捷键给 与集群交互 ,以便在 修改资源配置文件时快速打开上下文菜单。
配置代码折叠
默认情况下,GoLand 使用 代码折叠 将 Helm 模板和 Kubernetes 配置文件中的值引用和定义呈现为实际值。 您可以点击该值将其展开,或按 Ctrl+NumPad + 和 Ctrl+NumPad - 来切换折叠。 如果您希望默认情况下查看扩展的引用和定义,请执行以下操作:
在 设置 对话框(Ctrl+Alt+S )中,选择 。
在 代码折叠 页面上,清除必要的复选框:
Kubernetes:Helm 模板中的值引用
Kubernetes:YAML 文件中的 EnvVar 定义
Kubernetes:YAML 文件中的 ExecAction 定义