Kubernetes
Kubernetes是一个容器编排引擎,用于容器化应用程序的部署、扩展和管理。安装并启用适用于 PhpStorm 的Kubernetes插件,以添加以下用于管理 Kubernetes 集群的功能:
Kubernetes 资源配置文件的编码帮助。
Helm图表和模板的编码帮助。
使用自定义资源定义 (CRD) 规范验证自定义资源。
Kustomize文件的编码帮助:字段和本地文件路径完成、快速文档以及 Kustomize 文件和补丁之间的导航。相关 Kustomize 文件列表显示在打开的 Kustomize 补丁顶部的编辑器中。
从 PhpStorm 与集群交互:使用Services工具窗口查看当前上下文中 Kubernetes 集群的所有资源,跳转到相关资源定义,查看在 pod 上运行的容器的日志等等。
资源配置文件
Kubernetes插件从 1.5 版本开始支持 Kubernetes API 。它对 YAML 中的资源配置文件提供了丰富的支持,仅对 JSON 格式提供了基本支持。
PhpStorm 使用以下必填字段识别 Kubernetes 资源配置文件:
apiVersion
:标识对象表示的版本化模式kind
: 标识对象种类(例如,Service
、Pod
、Deployment
等)
如果前面的两个字段都存在于 YAML 或 JSON 文件中,PhpStorm 将使用相应的 Kubernetes 图标标记该文件并启用所有可用功能:
对于 YAML 文件,您还可以使用预定义的实时模板来创建必要的配置类型:
kcm
: Kubernetes 配置图kdep
: Kubernetes 部署kpod
: Kubernetes Podkres
: Kubernetes 通用资源kser
: Kubernetes 服务
配置 Kubernetes API 版本
PhpStorm 提供配置键值的补全、通过间距图标导航到相关选择器和定义、检查弃用值和所需键的专门检查以及其他辅助功能。这些取决于您使用的 API 版本。默认情况下,PhpStorm 将其设置为最新版本。但是,如果您的资源使用 API 的早期版本,您可以更改它。
在Settings/Preferences对话框 ( Ctrl+Alt+S) 中,选择Languages & Frameworks | Kubernetes。
根据需要更改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 规范的路径
按Ctrl+Alt+S打开 IDE 设置并选择Languages & Frameworks | Kubernetes。
单击并选择本地 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/v1
CronTab
metadata.name
spec.group
spec.versions
spec.names
JSON 格式的 OpenAPI v2.0 模式
以下示例显示了一个简单的OpenAPI v2.0sample/v1
模式,其中包含用于自定义资源类型的 CRD 规范Config
。自定义资源的根定义必须包含x-kubernetes-group-version-kind
具有指定组、版本和种类的字段。在示例中,root.Definition
对象使用build
属性来引用some.Definition
对象。
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 操作分配键盘快捷键。
在Settings/Preferences对话框 ( Ctrl+Alt+S) 中,选择Keymap。
在搜索字段中输入
kubernetes
内容,然后双击某个操作为其设置快捷方式。
或者,您可以使用“查找操作”对话框Ctrl+Shift+A,键入kubernetes
,选择必要的操作,然后按Alt+Enter。
配置代码折叠
默认情况下,PhpStorm 使用代码折叠将 Helm 模板中的值引用和 Kubernetes 配置文件中的定义呈现为实际值。您可以单击该值将其展开或按Ctrl+NumPad +和Ctrl+NumPad -切换折叠。如果您想查看默认展开的引用和定义,请执行以下操作:
在Settings/Preferences对话框 ( Ctrl+Alt+S) 中,选择 。
在代码折叠页面上,清除必要的复选框:
Kubernetes:Helm 模板中的值引用
Kubernetes:YAML 文件中的 EnvVar 定义
Kubernetes:YAML 文件中的 ExecAction 定义
使用多个 Kubernetes 配置文件
PhpStorm 检测默认
kubeconfig
文件。要使用不同的配置文件,请打开Settings/Preferences,选择 ,并设置必要的路径。如果您想在不同的项目中使用不同的配置文件,请选择Set this path only for the current project。