Kube-shell: An integrated shell for working with the Kubernetes CLI
Under the hood kube-shell still calls kubectl. Kube-shell aims to provide ease-of-use of kubectl and increasing productivity.
Auto Completion of Commands and Options with in-line documentation
Fish-Style Auto Suggestions
You can use up-arrow and down-arrow to walk through the history of commands executed. Also up-arrow partial string matching is possible. For e.g. enter 'kubectl get' and use up-arrow and down-arrow to browse through all kubectl get commands. You could also use CTRL+r to search from the history of commands.
Server Side Auto Completion
Details of current context from kubeconfig is always readily displayed on the bottom toolbar. By pressing F4 button you can switch between the clusters and using F5 can switch between namespaces.
vi editing mode
Press ESC you have all key bindings (w: next word, b: prev word) to move across the words.
The kube-shell requires python and pip to install. You can install the kube-shell using
$ pip install kube-shell
After installing kube-shell through pip, just run kube-shell to bring up shell.
At the kube-shell command prompt you can run exit or press F10 to exit the shell. You can clear the screen by running clear command.
By default drop-down suggestion list also displays in-line documentation, you can turn on/off inline documnetation by pressing F4 button.
You can run any shell command by prefixing command with "!". For e.g. !ls would list from the current directory.
Under the hood
A GO program is used to generate kubectl's commands, subcommands, arguments, global options and local options in json format. Kube-shell uses generated json file to suggest commands, subcommands, options and args. For server side completion kube-shell uses client-python libray to fetch the resources.
Kube-shell should be useful now. But given that its aim is to increase productivity and easy of use, it can be improved in a number of ways. If you have suggestions for improvements or new features, or run into a bug please open an issue here or chat in the Gitter.