Colored wrappers for kubectl

When using Kubernetes, kubectl is the command we use the most to visualize and debug objects.
However, it currently does not support colored output, though there is a feature request opened for this.
Let’s see how we can add color support. I’ll be using zsh with oh my zsh.
Edit: this feature was merged in oh my zsh, so it is now standard.
Zsh plugin
Let’s make this extension into a zsh plugin called kubectl_color:
❯ mkdir -p ~/.oh-my-zsh/custom/plugins/kubectl_color
❯ touch ~/.oh-my-zsh/custom/plugins/kubectl_color/kubectl_color.plugin.zsh
Now we need to fill in this plugin.
JSON colorizing
Let’s start with JSON, by adding an alias that colorizes JSON output using the infamous jq:
kj() {
kubectl "$@" -o json | jq
}
compdef kj=kubectl
The compdef line ensures the kj function gets autocompleted just like kubectl.
Edit: I’ve added another wrapper for fx, which provides a dynamic way to parse JSON:
kjx() {
kubectl "$@" -o json | fx
}
compdef kjx=kubectl
YAML colorizing
Just like for JSON, we can use yh to colorize YAML output:
ky() {
kubectl "$@" -o yaml | yh
}
compdef ky=kubectl
Energize!
Our plugin is now ready, we only need to activate it in ~/.zshrc by adding it to the list of plugins, e.g.:
plugins=(git ruby kubectl kubectl_color)
and with fx: