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,podis 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 inYAMLformat) -
isto open in a split. -
ivto open in a vertical split. -
itto open in a new tab. -
ddto 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:
-
grto 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}KapplyApply 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:
:Kdocwill 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. -
:KRun any arbitrary
kubectlcommand.
-
g:vimkubectl_commandDefault: 'kubectl'
If you are using an alternate Kubernetes client, it can be specified with
g:vimkubectl_command.For example to use OpenShift's
ocas the command, add this to yourvimrc:let g:vimkubectl_command = 'oc' -
g:vimkubectl_timeoutDefault: 5
The maximum time to wait for the cluster to respond to requests.
For example, to change the wait time to
10seconds:let g:vimkubectl_timeout = 10
