kakakakakku blog

Weekly Tech Blog : Keep on Learning 👍

kubecolor を使って kubectl の実行結果を色付けしよう

kubecolor コマンドを使うと kubectl コマンドの実行結果を色付けして読みやすくできる.kubectl コマンドの実行結果は基本的に白黒なので,リソース数が多かったり,例えば -o wide オプションを使って表示項目を増やしたりすると,読みにくくなることもある.

また技術講師として研修で Kubernetes を教える機会も多く,kubectl コマンドの実行結果を説明するときに「青の〜」「黄色の〜」という表現が使えると,特にリモート研修で注目して欲しい部分を正確に伝えられる.今回は kubecolor コマンドを紹介する.

github.com

kubecolor をインストールする

Linux と Mac なら kubecolor コマンドは brew コマンドで簡単にインストールできる.また go get コマンドで直接インストールすることもできるし,GitHub Releases からバイナリをダウンロードして使うこともできる.brew コマンドを使った場合は現時点だと v0.0.8 になる.数日前に最新版 v0.0.9 もリリースされている.詳しくは GitHub リポジトリ参照!

$ brew install dty1er/tap/kubecolor

また kubecolor コマンドは内部的に kubectl コマンドを実行するため,基本的には kubectl コマンドを置き換えて問題ないと思う.GitHub リポジトリの README.md にもそう書いてある.よって,慣れた k コマンドを kubecolor コマンドのエイリアスに設定しても良いし,タブ補完 (complete) も問題なく使える.例えば Mac だと .zshrc に以下のように設定している.

source <(kubectl completion zsh)
alias k='kubecolor'
complete -o default -F __start_kubectl kubecolor k

kubecolor を使う

サンプルとして,Deployment 経由で Pod を3個起動しておく.そして kubecolor get pods コマンドと kubecolor get pods -o wide コマンドを実行した結果を以下に載せる.従来の白黒と比較して,とても読みやすくなっていると思う.

f:id:kakku22:20210118002539p:plain

kubecolor コマンドは getdescribe など READ 関連コマンドをサポートしているため,次は kubecolor describe pods xxx コマンドを実行した結果を以下に載せる.特に describe は表示項目が多いため,少しでも色付けできると読みやすくなる.

f:id:kakku22:20210118002557p:plain

kubecolor コマンドは YAML フォーマットもサポートしているため,最後は kubecolor get pods xxx -o yaml コマンドを実行した結果を以下に載せる.複雑な YAML フォーマットも少しは読みやすくなっていると思う.

f:id:kakku22:20210118002613p:plain

なお,そもそも YAML フォーマットの「冗長な」情報を削除して読みやすくするなら,別記事で紹介した kubectl-neat も併用できる.kubecolor neat get pods xxx -o yaml のように kubectl-neat「ラッパー」で実行すれば,うまく色付けできる.

kakakakakku.hatenablog.com

kubecolor で使えるオプション

kubecolor コマンドで --light-background オプションを使えば,白背景などにも対応できる.実際に iTerm2 で試したところ,逆に読みにくくなることもあった.カラースキーマとの相性もあるため組み合わせを模索すると良さそう.また --plain オプションを使えば,kubecolor コマンドを使いつつ色付けを無効化できる.

iterm2colorschemes.com

まとめ

kubecolor コマンドを使うと kubectl コマンドの実行結果に色付けをして読みやすくできる.慣れた k コマンドのエイリアスに設定できるし,タブ補完 (complete) も使える.基本的には kubectl コマンドに影響は及ぼさないため,興味があったら試してみると良いかと!

github.com