Kubernetes UI Plugin for Kui
This project offers a kubectl plugin that offers graphical popups in
response to normal
kubectl commands. To provide a
popup-from-terminal experience, this project leverages the
kubectl kubeui get pods will pop up a window that
displays a table with clickable pod names; the screenshot to the right
illustrates one such popup.
Upon clicking a pod name, you will be presented with a multi-tab view of the detail of the resource you selected; the screenshot a bit further down and on the left illustrates such a multi-tab detail view.
You may choose to consume prebuilt images: download and extract into
~/.krew/bin, make sure that directory is on your PATH, then
kubectl kubeui get pods.
Code and Contribute
git clone https://github.com/kui-shell/plugin-kubeui && cd plugin-kubeuinpm cinpm start
You should see a window come up. You can now try, for example,
kubectl get pods, and expect to see a table, similar to that in the
above screenshot. This development client popup has an integrated
terminal. You may issue rapid-fire commands within this terminal, so
that you can test out a variety of commands in quick succession.
This project is coded in TypeScript. You may launch a TypeScript watcher via:
npm run watch
The edit-debug loop involves: edit and save a source change; wait for the TypeScript compiler to recompile your source changes; finally, in most cases a simple reload (via Ctrl+R, or Command+R on macOS) of the development client suffices to integrate your changes into an already-open window.
Building a Distribution
To pack up a set of platform clients for subsequent distribution, you may leverage several npm targets expressed in the package.json:
This command will build a macOS tarball, and place it in
npm run build:electron:mac
To enable your already-built bundles as kubectl plugins, this script
amends those archives with a simple
kubectl-kubeui script front end:
Or, you can build kubectl-enabled archives for all known platforms via:
npm run build:krew
You have the option to customize the theming in several ways. Here are some of the choices you can influence:
- client name
- client icon
- default theme
- available themes
These changes are captured in the
theme/ subdirectory. More details
coming soon. For now, browse the theme.json file.