PhpStorm 2021.3 Help

Kubernetes

Kubernetes是一个容器编排引擎,用于容器化应用程序的部署、扩展和管理。安装并启用适用于 PhpStorm 的Kubernetes插件,以添加以下用于管理 Kubernetes 集群的功能:

  • Kubernetes 资源配置文件的编码帮助。

  • Helm图表和模板的编码帮助。

  • 使用自定义资源定义 (CRD) 规范验证自定义资源。

  • Kustomize文件的编码帮助:字段和本地文件路径完成、快速文档以及 Kustomize 文件和补丁之间的导航。相关 Kustomize 文件列表显示在打开的 Kustomize 补丁顶部的编辑器中。

  • 从 PhpStorm 与集群交互:使用Services工具窗口查看当前上下文中 Kubernetes 集群的所有资源,跳转到相关资源定义,查看在 pod 上运行的容器的日志等等。

资源配置文件

Kubernetes插件从 1.5 版本开始支持 Kubernetes API 它对 YAML 中的资源配置文件提供了丰富的支持,仅对 JSON 格式提供了基本支持。

支持的功能

特征

YAML

JSON

自动完成

支持的

支持的

快速文档

支持的

支持的

检查和快速修复

  • 无效、丢失和重复的密钥

  • 不可编辑(只读)的密钥和资源

  • 已弃用的密钥和资源

  • 无效的整数和枚举键值

  • 无效、缺失和重复的属性

实时模板

常见配置类型的预定义模板:

  • kcm: 配置映射

  • kdep: 部署

  • kpod: 豆荚

  • kres: 通用资源

  • kser: 服务

没有预定义的实时模板

智能完成

支持的

不支持

自定义资源定义

支持的

不支持

标签定义和选择器

使用装订线图标导航、查找用法和重命名

不支持

原始 Kubernetes 模型的增强

枚举而不是适用的纯字符串

没有

PhpStorm 使用以下必填字段识别 Kubernetes 资源配置文件:

  • apiVersion:标识对象表示的版本化模式

  • kind: 标识对象种类(例如,ServicePodDeployment等)

如果前面的两个字段都存在于 YAML 或 JSON 文件中,PhpStorm 将使用相应的 Kubernetes 图标标记该文件并启用所有可用功能:

如何识别 Kubernetes 资源文件

对于 YAML 文件,您还可以使用预定义的实时模板来创建必要的配置类型:

  • kcm: Kubernetes 配置图

  • kdep: Kubernetes 部署

  • kpod: Kubernetes Pod

  • kres: Kubernetes 通用资源

  • kser: Kubernetes 服务

使用实时模板创建 Kubernetes 部署配置

配置 Kubernetes API 版本

PhpStorm 提供配置键值的补全、通过间距图标导航到相关选择器和定义、检查弃用值和所需键的专门检查以及其他辅助功能这些取决于您使用的 API 版本。默认情况下,PhpStorm 将其设置为最新版本。但是,如果您的资源使用 API 的早期版本,您可以更改它。

  1. Settings/Preferences对话框 ( Ctrl+Alt+S) 中,选择Languages & Frameworks | Kubernetes

  2. 根据需要更改Kubernetes API 版本Kustomize 版本选项。

掌舵支持

Helm是一个管理 Kubernetes 应用程序的工具。Helm 图表是您在 Kubernetes 集群中运行的预配置资源定义包。图表包含对包Chart.yaml的描述以及用于生成 Kubernetes 清单文件的一个或多个模板。

Helm 图表和模板的编码帮助包括代码完成、重构、检查、快速修复和快速文档。此外,可以使用装订线图标在标签定义和标签选择器之间以及覆盖值和覆盖值之间导航。代码完成包括来自指定存储库(默认情况下,来自Helm Hub)的依赖项值。

默认情况下,PhpStorm 将 Go 模板指令呈现为 Helm 模板中的实际值。您可以单击该值以展开并显示该指令。PhpStorm 为此使用代码折叠。按Ctrl+NumPad +Ctrl+NumPad -在值和指令之间切换。

创建一个新的 Helm 图表

  • 右键单击 Project 工具窗口中的任意目录,指向Kubernetes,然后单击Helm Chart

这会运行helm create命令,该命令会添加开始所需的所有基本文件:

  • .helmignore : 构建包时要忽略的模式

  • Chart.yaml:带有元数据的基本图表描述

  • values.yaml:图表模板的默认值

  • chart/ : 子图表目录

  • templates/ : 图表定义目录

    • _helpers.tpl:模板的部分和功能

    • NOTES.txt:部署图表后打印出的信息

    • deployment.yaml:示例 Kubernetes 部署定义

    • ingress.yaml:示例 Kubernetes 入口定义

    • service.yaml:示例 Kubernetes 服务定义

预览 Helm 模板渲染的结果

  • 右键单击模板文件,指向Kubernetes,然后单击Helm Template

这将运行渲染图表模板的helm template命令。渲染预览在差异查看器中打开,以将其与原始模板文件进行比较。

更新外部依赖

  • 右键单击图表,指向Kubernetes,然后单击Helm Dependency Update

这将运行helm 依赖项更新命令。

在 Helm 2 中,应在requirements.yaml文件中指定依赖项。此操作还会生成或更新requirements.lock

在 Helm 3 中,应在Chart.yaml文件中指定依赖项。如果您在错误的文件中指定了依赖项,PhpStorm 会提供检查和快速修复来移动它们。

检查图表以查找可能的问题

  • 右键单击图表,指向Kubernetes,然后单击Helm Lint

这将运行helm lint命令,该命令执行一系列测试以发现可能的问题,而无需实际安装图表。

自定义资源定义支持

如果您使用自定义资源扩展 Kubernetes 集群,PhpStorm 可以使用自定义资源定义(CRD) 规范对其进行验证。

指定 CRD 规范的路径

  1. Ctrl+Alt+S打开 IDE 设置并选择Languages & Frameworks | Kubernetes

  2. 单击添加按钮并选择本地 CRD 文件或指定 URL。然后单击确定

使用向上按钮向下按钮重新排列 CRD 文件列表。这定义了冲突定义的优先级:如果在多个文件中定义,PhpStorm 将使用最低的定义。

默认情况下,CRD 仅应用于当前项目。如果您希望某个 CRD 可用于您使用此 IDE 实例打开的任何项目,请将Scope:选项更改为。IDE

要从正在运行的 Kubernetes 集群加载 CRD,请启用Use API schema from active cluster if available

您可以在服务工具窗口的Kubernetes节点下查看当前集群的 CRD,包括其所有应用的资源。

Kubernetes 插件支持以下类型的 CRD 文件:

YAML 中的 CustomResourceDefinition 文件

下面的示例显示了用于自定义资源类型的简单CustomResourceDefinition规范。标识资源的必填字段是、、和。stable.example.com/v1CronTabmetadata.namespec.groupspec.versionsspec.names

apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition metadata: name: crontabs.stable.example.com # 标识资源规范的必填字段: group: stable.example.com # 标识资源版本的必填字段: # 必填标识资源的字段 - 名称:v1 服务:真实存储:真实范围:命名空间名称:# 标识资源复数的必填字段:crontabs 单数:crontab 种类:CronTab shortNames:-ct 验证:openAPIV3Schema:# 验证自定义对象属性的模式: spec: properties: cronSpec: type: string pattern: '^(\d+|\*)(/\d+)?(\s+(\d+|\*)(/\d+)? ){4}$' # 不支持验证副本:类型:整数 最小值:1 # 不支持验证最大值:10 # 不支持验证# 不支持验证副本:类型:整数 最小值:1 # 不支持验证最大值:10 # 不支持验证# 不支持验证副本:类型:整数 最小值:1 # 不支持验证最大值:10 # 不支持验证

JSON 格式的 OpenAPI v2.0 模式

以下示例显示了一个简单的OpenAPI v2.0sample/v1模式,其中包含用于自定义资源类型的 CRD 规范Config。自定义资源的根定义必须包含x-kubernetes-group-version-kind具有指定组、版本和种类的字段。在示例中,root.Definition对象使用build属性来引用some.Definition对象。

{ "swagger": "2.0", "info": { "title": "Sample Schema", "version": "sample/v1" }, "paths": {}, "definitions": { "some.Definition ": { "description": "定义示例。", "properties": { "someProperty": { "type": "string" } } }, "root.Definition":{ "description": "这是资源的根定义", "properties": { "build": { "$ref": "#/definitions/some.Definition" } }, "x-kubernetes-group-版本种类”:[ {“组”:“样本”,“种类”:“配置”,“版本”:“v1”}] } } }} ] } } }

CRD 验证限制

PhpStorm 不支持以下 OpenAPI v3 架构功能:

  • multipleOf

  • maximum

  • exclusiveMaximum

  • minimum

  • exclusiveMinimum

  • maxLength

  • minLength

  • pattern

  • maxItems

  • minItems

  • uniqueItems

  • maxProperties

  • minProperties

  • allOf

  • oneOf

  • anyOf

  • not

  • format

  • default

  • nullable

  • readOnly

  • writeOnly

  • xml

  • externalDocs

  • example

  • deprecated

生产力提示

如果您经常使用此处描述的功能,以下提示可能会有所帮助:

分配快捷方式

您可以为 Kubernetes 操作分配键盘快捷键。

  1. Settings/Preferences对话框 ( Ctrl+Alt+S) 中,选择Keymap

  2. 在搜索字段中输入kubernetes内容,然后双击某个操作为其设置快捷方式。

或者,您可以使用“查找操作”对话框Ctrl+Shift+A,键入kubernetes,选择必要的操作,然后按Alt+Enter

配置代码折叠

默认情况下,PhpStorm 使用代码折叠将 Helm 模板中的值引用和 Kubernetes 配置文件中的定义呈现为实际值。您可以单击该值将其展开或按Ctrl+NumPad +Ctrl+NumPad -切换折叠。如果您想查看默认展开的引用和定义,请执行以下操作:

  1. Settings/Preferences对话框 ( Ctrl+Alt+S) 中,选择Editor | 一般 | 代码折叠

  2. 代码折叠页面上,清除必要的复选框:

    • Kubernetes:Helm 模板中的值引用

    • Kubernetes:YAML 文件中的 EnvVar 定义

    • Kubernetes:YAML 文件中的 ExecAction 定义

使用多个 Kubernetes 配置文件

  • PhpStorm 检测默认kubeconfig文件。要使用不同的配置文件,请打开Settings/Preferences,选择Build, Execution, Deployment | Kubernetes,并设置必要的路径。如果您想在不同的项目中使用不同的配置文件,请选择Set this path only for the current project

最后修改:2021 年 7 月 23 日