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:
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 in YAML
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 your vimrc
:
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