Colorize your kubectl output
- get pods
- describe pods
- something wrong
- You can change color theme for light-backgrounded environment
kubecolor colorizes your
kubectl command output and does nothing else.
kubecolor internally calls
kubectl command and try to colorizes the output so
you can use kubecolor as a complete alternative of kubectl. It means you can write this in your .bash_profile:
If you use your .bash_profile on more than one computer (e.g. synced via git) that might not all have
installed, you can avoid breaking
kubectl like so:
command -v kubecolor >/dev/null 2>&1 && alias kubectl="kubecolor"
For now, not all subcommands are supported and some of them might be in the future. If you want something to be supported by kubecolor, you can open an issue in this GitHub repo.
Even if what you want to do is not supported by kubecolor right now, kubecolor still can just show
kubectl output without any decorations,
so you don't need to switch kubecolor and kubectl but you always can use kubecolor.
kubectl resulted an error, kubecolor just shows the error message in red or yellow.
Please keep in mind that kubecolor has runtime overhead compared to kubectl because it runs kubectl internally and parses the output, then colorizes it.
Download binary via GitHub release
Go to Release page then download the binary which fits your environment.
Mac and Linux users via Homebrew
brew install hidetatz/tap/kubecolor
Manually via go command
Note: if you install kubecolor via go command, --kubecolor-version might not work
go install github.com/hidetatz/kubecolor/cmd/kubecolor@latest
If you are not using module mode (or if just above doesn't work), try below:
go get -u github.com/hidetatz/kubecolor/cmd/kubecolor
kubecolor understands every subcommands and options which are available for
kubectl. What you have to do is just using
kubecolor --context=your_context get pods -o json
If you want to make the colorized kubectl default on your shell, just add this line into your shell configuration file:
Dynamic tty support
When the kubecolor output tty is not standard output, it automatically disables the colorization.
For example, if you are running
kubecolor get pods > result.txt or
kubecolor get pods | grep xxx, the output will be passed through to file or another command, so colorization is not applied.
You can force kubecolor do colorization at such cases by passing
--force-colors flag. See the upcoming section for more details.
Available flags for kubecolor. When you pass them, kubecolor will understand them but these flags won't be passed to kubectl.
Prints the version of kubecolor (not kubectl one).
When your terminal's background color is something light (e.g white), default color preset might look too bright and not readable.
If so, specify
--light-background as a command line argument. kubecolor will use a color preset for light-backgrounded environment.
By default, kubecolor never output the result in colors when the tty is not a terminal standard output.
If you want to force kubecolor to show the result in colors for non-terminal tty, you can specify this flag.
For example, when you want to pass kubecolor result to grep (
kubecolor get pods | grep pod_name), this option is useful.
When you don't want to colorize output, you can specify
--plain. Kubecolor understands this option and outputs the result without colorizing.
For Bash, configuring autocompletion requires adding following line in your shell config file.
# autocomplete for kubecolor complete -o default -F __start_kubectl kubecolor
If you are using an alias like
k="kubecolor", then just change above like:
complete -o default -F __start_kubectl k
For zsh make sure these lines are present in your zsh config file:
# get zsh complete kubectl source <(kubectl completion zsh) alias kubectl=kubecolor # make completion work with kubecolor compdef kubecolor=kubectl
Fish completion is officially unsupported by
kubectl, so it is unsupported by
kubecolor as well.
However, there are 2 ways we can make them work. Please keep in mind these are a kind of "hack" and not officially supported.
Use evanlucas/fish-kubectl-completions with
fisher install evanlucas/fish-kubectl-completions
- Add the following function to your
function kubectl kubecolor $argv end
The first way will override
kubectlcommand. If you wish to preserve both
kubecolorwith completions, you need to copy evanlucas/fish-kubectl-completions for the
For this purpose, you can use awinecki/fish-kubecolor-completions.
Specify what command to execute as kubectl
Sometimes, you may want to specify which command to use as
kubectl internally in kubecolor. For example, when you want to use a versioned-kubectl
kubectl.1.19, you can do that by an environment variable:
KUBECTL_COMMAND="kubectl.1.19" kubecolor get po
When you don't set
kubectl is used by default.
Supported kubectl version
Because kubecolor internally calls
kubectl command, if you are using unsupported kubectl version, it's also not supported by kubecolor.
Kubernetes version support policy can be found in official doc.
Even if kubectl supports plugin feature, it is not supported by kubecolor, including Krew.
It means you can use plugins from kubecolor (e.g. you can do
kubecolor plugin_name xxx), but the result won't be colorized.
Always welcome. Just opening an issue should be also greatful.