插件
概述
K9s 允许您通过插件定义自己的集群命令,从而扩展您的命令行和工具。K9s 会查找 $XDG_CONFIG_HOME/k9s/plugins.yaml
文件来定位所有可用的插件。
此外,K9s 还会扫描以下目录以查找其他插件:
$XDG_CONFIG_HOME/k9s/plugins
$XDG_DATA_HOME/k9s/plugins
$XDG_DATA_DIRS/k9s/plugins
您还可以使用 $XDG_DATA_HOME/k9s/clusters/clusterX/contextY/plugins.yaml
在特定上下文的配置中进一步扩展插件行为。
插件文件的内容可以是一个单独的插件片段、多个片段的集合,或一个完整的插件定义(参见下文示例……)。
一个插件的定义如下:
- Shortcut 选项代表用户激活插件时需要按下的组合键。
- Description 将会显示在 k9s 菜单中快捷键的旁边。
- Scopes 定义了与该插件关联的视图的资源名称/短名称集合。您可以指定
all
,为所有视图提供此快捷方式。 - Command 代表插件在激活时运行的即时命令。
- Background 指定命令是否在后台运行。
- Args 指定应应用于上述命令的各种参数。
K9s 提供了额外的环境变量,以便您自定义插件参数。目前可用的环境变量如下:
$NAMESPACE
– 所选资源的命名空间$NAME
– 所选资源的名称$CONTAINER
– 当前的容器(如果适用)$FILTER
– 当前的过滤器(如果有)$KUBECONFIG
– KubeConfig 文件的位置$CLUSTER
– 当前活动的集群名称$CONTEXT
– 当前活动的上下文名称$USER
– 当前活动的用户$GROUPS
– 当前活动的组$POD
– 在容器视图中时$COL-<RESOURCE_COLUMN_NAME>
– 使用所查看资源的给定列名。必须以COL-
为前缀!
注意:可以看一看 K9s 社区朋友们贡献的一些社区自定义插件。
仍在开发中…… 随着此功能的完善,选项和布局在未来的 K9s 版本中可能会发生变化。
示例
这里定义了一个插件,用于通过 ctrl-l
快捷键查看所选 Pod 的日志。
# Define several plugins in a single file in the K9s root configuration
# $XDG_CONFIG_HOME/k9s/plugins.yaml
plugins:
# Defines a plugin to provide a `ctrl-l` shortcut to tail the logs while in pod view.
fred:
# Define a mnemonic to invoke the plugin
shortCut: Ctrl-L
# What will be shown on the K9s menu
description: Pod logs
# Collections of views that support this shortcut. (You can use `all`)
scopes:
- po
# The command to run upon invocation. Can use Krew plugins here too!
command: kubectl
# Whether or not to run the command in background mode
background: false
# Defines the command arguments
args:
- logs
- -f
- $NAME
- -n
- $NAMESPACE
- --context
- $CONTEXT
同样,您也可以在目录中定义上述插件,可以使用一个文件一个插件,或者多个插件一个文件,如下所示……
以下定义了两个插件,分别名为 fred 和 zorg。
# Multiple plugins in a single file...
# Note: as of v0.40.9 you can have ad-hoc plugin dirs
# Loads plugins fred and zorg
# $XDG_DATA_HOME/k9s/plugins/misc-plugins/blee.yaml
fred:
shortCut: Shift-B
description: Bozo
scopes:
- deploy
command: bozo
zorg:
shortCut: Shift-Z
description: Pod logs
scopes:
- svc
command: zorg
最后,您还可以将插件片段定义在它们自己的文件中。片段名称将取自文件名。在这种情况下,我们使用一个插件片段定义了一个名为 bozo
的插件。
# $XDG_DATA_HOME/k9s/plugins/schtuff/bozo.yaml
shortCut: Shift-B
description: Bozo
scopes:
- deploy
command: bozo
