Krew is a kubectl plugin manager for installing and managing plugins in the local system. It is widely known for enhancing the kubernetes experience. You can't just install available kubectl plugins but you can also package and distribute plugins on multiple platforms quite easily and can make those discoverable through a central plugin repository so that others can easily find and use your plugins. Krew works on all the major platforms such as Windows, Linux and MacOS. Check the steps on How to Install Krew Plugin Manager for kubectl CLI on Linux to install it on a linux distribution.
Krew - Plugin Manager for Kubectl Command Line Tool
Also Read: Solved: Multi-Attach error for Volume "pvc-xx" Volume is already Used
Example 1: How to download all the Plugins list
To download the latest available plugins in your local system, you need to use
kubectl krew update command as shown below.
cyberithub@ubuntu:~$ kubectl krew update Updated the local copy of plugin index.
Example 2: How to search all the available Plugins
To search all the currently available plugins, you need to use
kubectl krew search command as shown below.
cyberithub@ubuntu:~$ kubectl krew search NAME DESCRIPTION INSTALLED access-matrix Show an RBAC access matrix for server resources no accurate Manage Accurate, a multi-tenancy controller no advise-policy Suggests PodSecurityPolicies and OPA Policies f... no advise-psp Suggests PodSecurityPolicies for cluster. no allctx Run commands on contexts in your kubeconfig no apparmor-manager Manage AppArmor profiles for cluster. no applier Apply 'go text/template' files on k8s. no assert Assert Kubernetes resources no auth-proxy Authentication proxy to a pod or service no aws-auth Manage aws-auth ConfigMap no ...........................................
If you are searching for some specific plugin then you can simply
grep it by using
kubectl krew search | grep -i nsenter command as shown below.
cyberithub@ubuntu:~$ kubectl krew search | grep -i nsenter nsenter Run shell command in Pod's namespace on the nod... no
Example 3: How to Install a Plugin
If you are looking to install a plugin, then you need to use
kubectl krew install <plugin_name> syntax. In below example, we are installing a plugin called
kubectl krew install nsenter command as shown below.
cyberithub@ubuntu:~$ kubectl krew install nsenter Updated the local copy of plugin index. Installing plugin: nsenter Installed plugin: nsenter \ | Use this plugin: | kubectl nsenter | Documentation: | https://github.com/pabateman/kubectl-nsenter | Caveats: | \ | | * This plugin needs SSH access to nodes | | * Remote user must have root access | | * Nodes need to have 'nsenter' | / / WARNING: You installed plugin "nsenter" from the krew-index plugin repository. These plugins are not audited for security by the Krew maintainers. Run them at your own risk.
Example 4: How to Use a Installed Plugin
If you are looking to use an installed plugin then you need to use it like below. Here we have a plugin called
nsenter installed in our local system. We are using it to get the hostname of pod
kubectl nsenter -u vagrant my-nginx-66b6c48dd5-m4w8b hostname command as shown below.
cyberithub@ubuntu:~$ kubectl nsenter -u vagrant my-nginx-66b6c48dd5-m4w8b hostname
Example 5: How to Upgrade Plugins
If you are looking to upgrade your installed plugins to the latest version then you need to use
kubectl krew upgrade command as shown below.
cyberithub@ubuntu:~$ kubectl krew upgrade Updated the local copy of plugin index. Upgrading plugin: krew Skipping plugin krew, it is already on the newest version
Example 6: How to Check Information about an available Plugin
If you want to know about an available plugin then you need to use
kubectl krew info <plugin_name> syntax. Here we are checking complete information about
nsenter plugin using
kubectl krew info nsenter command as shown below.
cyberithub@ubuntu:~$ kubectl krew info nsenter NAME: nsenter INDEX: default URI: https://github.com/pabateman/kubectl-nsenter/releases/download/v0.2.3/kubectl-nsenter-linux-amd64.tar.gz SHA256: 356d5c7974a870bf692bbfb065fcc27220b48df371712574aff5fe175b84e9a0 VERSION: v0.2.3 HOMEPAGE: https://github.com/pabateman/kubectl-nsenter DESCRIPTION: This plugin establishes a connection to node that's running the Pod over SSH and uses nsenter to run commands in the container's namespace. You would need something like this to run programs that are missing in the container image but presents on node. CAVEATS: \ | * This plugin needs SSH access to nodes | * Remote user must have root access | * Nodes need to have 'nsenter' /
Example 7: How to List all installed Plugins
To check all the installed plugins, you need to use
kubectl krew list command as shown below. This will show the plugins with its installed version.
cyberithub@ubuntu:~$ kubectl krew list PLUGIN VERSION krew v0.4.3 nsenter v0.2.3
Example 8: How to Check the Version and Diagnostics
To check krew install path and other related information, you can run
kubectl krew version command as shown below. This will show some of the important information such as Git Tag version, Git Commit value, Index URI, Base Path, Index Path, Binary Path and Detected Platform.
cyberithub@ubuntu:~$ kubectl krew version OPTION VALUE GitTag v0.4.3 GitCommit dbfefa5 IndexURI https://github.com/kubernetes-sigs/krew-index.git BasePath /home/cyberithub/.krew IndexPath /home/cyberithub/.krew/index/default InstallPath /home/cyberithub/.krew/store BinPath /home/cyberithub/.krew/bin DetectedPlatform linux/amd64
Example 9: How to List Configured Indexes
If you are looking to list our the configured indexes then you need to run
kubectl krew index list command as shown below.
cyberithub@ubuntu:~$ kubectl krew index list INDEX URL default https://github.com/kubernetes-sigs/krew-index.git
Example 10: How to Uninstall a Plugin
Once you are done using a plugin, you can simply uninstall it from your system by using
kubectl krew uninstall <plugin_name> syntax. In below example, we are uninstalling nsenter plugin by using
kubectl krew uninstall nsenter command as shown below.
cyberithub@ubuntu:~$ kubectl krew uninstall nsenter Uninstalled plugin: nsenter