Before diving into the topic, lets have look at few terminologies.
Kubernetes and kubectl
Kubernetes, also known as k8s, is opensource container-orchestration tool which is generally used manage the containers, application deployments, services. If you run your workload on containers then kubernetes is best option to choose. Best thing about kubernetes is its opensource. You can deploy it on your on-premise servers or cloud managed server, you don't have to pay for anything for software. Once you cluster is up and running, kubectl, is tool with whom you spend your most of the time. Its a command line tool which used to manage kubernetes cluster in terms of deploying application, services, inspecting containers, checking logs etc. kubectl comes with lots of sub-command. Each sub-command has its own use. In this blog, we are going to create our own sub-command, which is known as plugin.
Kubectl plugins are standalone scripts. Scripts can be written in any programming language. These executable scripts are stored in your
PATH and whose names start with
kubectl-. PATH is where all you commands are present. You can see PATH by following command :
# echo $PATH
Just place your executable script anywhere in your PATH and you are good to go.
How to write Plugin
Create file starting with
kubectl-. For example,
kubectl-greetings which will create
kubectl greetings command. To install plugin, you must save this file anywhere in you PATH. Following is example of plugin that will greet user
Save this in kubectl-greetings and run following command to make it executable. After that move this file anywhere in you
# chmod +x kubectl-greetings
Now you are all set to run
kubectl greetings command which will output
Hello with username. Output of command from above script shown below
You can check all installed plugins by running following command:
# kubectl plugin list
It is not possible to create plugins which will overwrite existing kubectl command. For example, if you create
kubectl-create script and try to run it,
kubectl create command will always take precedence over it and your script will be ignored.