A simple terminal dashboard for Kubernetes built with Rust
Sponsors
Thanks to the sponsors of @deepu105 who makes maintaining projects like KDash sustainable. Consider sponsoring if you like the work.
Installation
Homebrew (Mac & Linux)
brew tap kdash-rs/kdash
brew install kdash
# If you need to be more specific, use:
brew install kdash-rs/kdash/kdash
To upgrade
brew upgrade kdash
Scoop (Windows - Recommended way)
scoop bucket add kdash-bucket https://github.com/kdash-rs/scoop-kdash
scoop install kdash
Chocolatey (Windows)
Chocolatey package is located here. Since validation of the package takes forever, it may take a long while to become available after a release. I would recommend using Scoop instead for Windows.
choco install kdash
# Version number may be required for newer releases, if available:
choco install kdash --version=0.4.3
To upgrade
choco upgrade kdash --version=0.4.3
Cargo
If you have Cargo installed then you install KDash from crates.io
cargo install kdash
# if you face issues with k8s-openapi crate try the below
cargo install --locked kdash
You can also clone the repo and run cargo run
or make
to build and run the app
Nix
Try out kdash via nix run nixpkgs#kdash
or add kdash
to your
configuration.nix
for permanent installation.
Install script
Run the below command to install the latest binary. Run with sudo if you don’t have write access to /usr/local/bin
. Else the script will install to the current directory
curl https://raw.githubusercontent.com/kdash-rs/kdash/main/deployment/getLatest.sh | bash
Manual
Binaries for macOS (x86_64, arm64), Linux GNU/MUSL(x86_64, armv6, armv7, aarch64) and Windows (x86_64, aarch64) are available on the releases page
- Download the latest binary for your OS.
- For Linux/macOS:
cd
to the file you just downloaded and runtar -C /usr/local/bin -xzf downloaded-file-name
. Use sudo if required.- Run with
kdash
- For Windows:
- Use 7-Zip or TarTool to unpack the tar file.
- Run the executable file
kdash.exe
Docker
Run KDash as a Docker container by mounting your KUBECONFIG
. For example the below command for the default path
docker run --rm -it -v ~/.kube/config:/root/.kube/config deepu105/kdash
# If you want localhost access from the container
docker run --network host --rm -it -v ~/.kube/config:/root/.kube/config deepu105/kdash
You can also clone this repo and run make docker
to build a docker image locally and run it using the above command
Troubleshooting
Note: This may not work properly if you run Kubernetes locally using Minikube or Kind
Note: On Debian/Ubuntu you might need to install
libxcb-xfixes0-dev
andlibxcb-shape0-dev
. On Fedoralibxcb
andlibxcb-devel
would be needed.
Note: On Linux you might need to have package
xorg-dev
(Debian/Ubuntu) orxorg-x11-server-devel
(Fedora) or equivalent installed for the copy to clipboard features to work
Note: If you are getting compilation error from openSSL. Make sure perl and perl-core are installed for your OS.
USAGE:
kdash
Press ?
while running the app to see keybindings
FLAGS:
-h, --help
: Prints help information-V, --version
: Prints version information-t, --tick-rate <tick-rate>
: Set the tick rate (milliseconds): the lower the number the higher the FPS.-p, --poll-rate <poll-rate>
: Set the network call polling rate (milliseconds, should be multiples of tick-rate): the lower the number the higher the network calls.
Limitations/Known issues
- [Linux/Docker] Copy to clipboard feature is OS/arch dependent and might crash in some Linux distros and is not supported on
aarch64
andarm
machines. - [macOS] KDash looks better on iTerm2 since macOS’s default Terminal app makes the colors render weird.
- [Windows] KDash looks better on CMD since Powershell’s default theme makes the colors look weird.
- [Windows] If using k3d for local clusters, set the server URL to 127.0.0.1 as 0.0.0.0 doesn’t work with kube-rs. You can use
k3d cluster create --api-port 127.0.0.1:6550
or change thecluster.server
value in your.kube/config
for the k3d cluster to127.0.0.1:<port>
.
Features
- CLI info
- Node metrics
- Resource watch (configurable polling interval with
-p
flag) - Custom resource definitions
- Describe resources & copy the output
- Get YAML for resources & copy the output
- Stream container logs
- Context
- Context info
- Context watch
- Change namespace
- Context switch
- Resources utilizations for nodes, pods and namespaces based on metrics server. Requires metrics-server to be deployed on the cluster.
- Dark/Light themes
- Sensible keyboard shortcuts
- Global glob filtering for resource names
Screenshots
Overview screen
Container logs screen (light theme)
Pod describe screen (light theme)
Contexts screen
Utilization screen
Libraries used
How does this compare to K9S?
K9S is a beast compared to this as it offers way more features including CRUD actions.
KDash only offers a view of the resources with a focus on speed and UX. Really, if something is slow or has bad UX then please raise a bug. Hence the UI/UX is designed to be more user-friendly and easier to navigate with contextual help everywhere and a tab system to switch between different resources easily.
At least for now, there are no plans to add full CRUD for resources but in the future, we might.
Licence
MIT