A Vim/Neovim plugin to manipulate Kubernetes resources.
This plugin is a kubectl
wrapper providing commands and mappings to perform actions on Kubernetes resources.
The following has been implemented so far:
- Fetch and view lists of kubernetes resources
- Edit resource manifests in YAML form
- Apply any file or buffer to the cluster
- Delete resources
- Switch namespace
- Switch contexts
- View kubernetes resource manuals
This plugin follows the standard runtime path structure, you can install it with your favourite plugin manager.
Plugin Manager | Instructions |
---|---|
NeoBundle | NeoBundle 'rottencandy/vimkubectl' |
Vundle | Plugin 'rottencandy/vimkubectl' |
Plug | Plug 'rottencandy/vimkubectl' |
Pathogen | git clone https://github.com/rottencandy/vimkubectl ~/.vim/bundle |
Vim 8+ packages | git clone git@github.com:rottencandy/vimkubectl.git ~/.vim/pack/vendor/start/vimkubectl && vim -u NONE -c "helptags ~/.vim/pack/vendor/start/vimkubectl/doc" -c q |
This plugin assumes your Kubernetes cluster is reachable and logged in with kubectl or oc.(see configuration)
-
:Kget {resource}
Get a list of all objects of type
{resource}
. If{resource}
is not given,pod
is used.You can also use
<Tab>
for completion and to cycle through possible resources.-
ii
(think, "insert mode") to open and edit the manifest of the resource under cursor, in the current window(opens inYAML
format) -
is
to open in a split. -
iv
to open in a vertical split. -
it
to open in a new tab. -
dd
to delete the resource under cursor. (Prompts for confirmation)
-
-
:Kedit {resource} {object}
Open a split containing the manifest of
{object}
of type{resource}
. Also has<Tab>
completion. -
The opened manifest can be edited just like a regular file, except that it gets applied on every save.
The following mappings are available in these buffers:
-
gr
to refresh/update the manifest. Note that this will disregard any unsaved local changes. -
:Ksave {filename}
to save the manifest locally. If{filename}
is not given, the resource object name is used.
-
-
:Kns {name}
Change the active namespace to
{name}
. If{name}
is not given, prints the currently used namespace.<Tab>
completion can be used to cycle through available namespaces. -
:Kctx {name}
Change the active context to
{name}
. If{name}
is not given, prints the currently active context.<Tab>
completion can be used to cycle through available contexts. -
:{range}Kapply
Apply file contents. When used with a selection(), applies the selected content, else applies the entire file. Can be used on any open buffer.
-
:Kdoc {resource}
Retrieve documentation on a specific
{resource}
.You can also use
<Tab>
for completion and to cycle through possible resources that are manifest on your kubernetes cluster.NOTE:
:Kdoc
will retrieve manuals for any CRD on the cluster. There doesn't have to be any existing k8s objects on the cluster in order to retrieve the manual. -
:K
Run any arbitrary
kubectl
command.
-
g:vimkubectl_command
Default: 'kubectl'
If you are using an alternate Kubernetes client, it can be specified with
g:vimkubectl_command
.For example to use OpenShift's
oc
as the command, add this to yourvimrc
:let g:vimkubectl_command = 'oc'
-
g:vimkubectl_timeout
Default: 5
The maximum time to wait for the cluster to respond to requests.
For example, to change the wait time to
10
seconds:let g:vimkubectl_timeout = 10