Havener /ˈheɪvənə/
Table of Contents
Introducing Havener
If you use a Kubernetes cluster, chances are very high that you use kubectl
a lot. These are fine tools and allow you to do everything you need to do, but there are use cases where you end up with a very long kubectl
command in your terminal. This is why we created havener
to introduce a convenience wrapper around kubectl
. Think of it as a swiss army knife for Kubernetes tasks. Possible use cases are for example executing a command on multiple pods at the same time, or retrieving usage details.
Ok, tell me more
To see a detail list of all havener commands, please refer to the command documentation.
Like kubectl
, havener
relies on the Kubernetes configuration that can be set via the KUBECONFIG
environment variable. It can also be provided with the --kubeconfig
flag, which takes the path to the YAML file (for example $HOME/.kube/config
).
Notable Use Cases
Usage overview
Quickly get a live overview of the current cluster usage details, for example Load, CPU, and Memory of the cluster nodes.
Pods in namespace overview
Watch pods in multiple namespaces with added colors to help identify the respective state.
Havener Commands
- havener events - Show Kubernetes cluster events
- havener logs - Retrieve log files from all pods
- havener node-exec - Execute command on Kubernetes node
- havener pod-exec - Execute command on Kubernetes pod
- havener top - Shows CPU and Memory usage
- havener watch - Watch status of all pods in all namespaces
How do I get started
There are different ways to get havener
. You are free to pick the one that makes the most sense for your use case.
-
On macOS systems, a Homebrew tap is available to install
havener
:brew install homeport/tap/havener
-
Use a convenience script to download the latest release to install it in a suitable location on your local machine:
curl -sL https://raw.githubusercontent.com/homeport/havener/main/scripts/download-latest.sh | bash
-
Of course, you can also build it from source code (only for development):
go install github.com/homeport/havener/cmd/havener
Contributing
We are happy to have other people contributing to the project. If you decide to do that, here's how to:
- get Go (
havener
requires Go version 1.19 or greater) - fork the project
- create a new branch
- make your changes
- open a PR.
Git commit messages should be meaningful and follow the rules nicely written down by Chris Beams:
The seven rules of a great Git commit message
- Separate subject from body with a blank line
- Limit the subject line to 50 characters
- Capitalize the subject line
- Do not end the subject line with a period
- Use the imperative mood in the subject line
- Wrap the body at 72 characters
- Use the body to explain what and why vs. how
Running test cases and binaries generation
There are multiple make targets, but running all
does everything you want in one call.
make all
Test it with Linux on your macOS system
The best way to test is to use Docker to spin up a container:
docker run \
--interactive \
--tty \
--rm \
--volume $GOPATH/src/github.com/homeport/havener:/go/src/github.com/homeport/havener \
--workdir /go/src/github.com/homeport/havener \
golang:1.19 /bin/bash
Package dependencies (Go modules)
The Go module setup can be frustrating, if you have to update Kubernetes API libraries. In general, using go get
with a specific version based on a tag is known to work, for example go get k8s.io/[email protected]
. In case you run into difficulties, please do not hesitate to reach out to us.
License
Licensed under MIT License