Kubernetesのコンテキストをいい感じにシェル上で表示する
仕事で複数のKubernetesクラスタを触ることが多いのですが、たまに間違えて検証用とは別のクラスタに検証用のPodをデプロイしてしまうことがありました。こういったオペミスを減らす方法のひとつとして、ターミナル上に現在のコンテキストをいい感じに表示する方法をご紹介します。
やり方
必要なコマンド
- kubectl
- figlet
以下のコマンドを実行することで、現在のカレントコンテキストを表示します。
watch -n 1 "kubectl config current-context | figlet -f banner3 -w100"
実際の挙動は以下のとおりです。
詳しく
kubectl
コマンドには、現在のコンテキストを出力するコマンドが存在しており、これを用いてコンテキストを取得します。
kubectl config current-context
そのままでは文字が小さすぎて見づらいので、文字列をアスキーアート化させる Figlet というコマンドに渡しています。figletは Homebrew などで簡単にインストールできます。
Figletを使うことで以下のように簡単にアスキーアートを生成します。
$ figlet hoge
_
| |__ ___ __ _ ___
| '_ \ / _ \ / _` |/ _ \
| | | | (_) | (_| | __/
|_| |_|\___/ \__, |\___|
|___/
さらに、 -f
オプションでフォントファイル(スタイル)を変更することができます。各スタイルは、公式サイトに例があるので、そちらを参考にしつつ、手元で試してみると良いです。
今回は、比較的見やすいフォントである banner3
を利用しました。このフォントは、強制的に全て大文字になるようです。
$ figlet -f banner3 hoge
## ## ####### ###### ########
## ## ## ## ## ## ##
## ## ## ## ## ##
######### ## ## ## #### ######
## ## ## ## ## ## ##
## ## ## ## ## ## ##
## ## ####### ###### ########
併せて、文字の改行位置をずらすために、 -w100
オプションを使っています。このあたりは、ご自身のコンテキスト名に合わせて微調整すると良い感じです。
$ figlet -f banner3 -w25 hoge
## ## #######
## ## ## ##
## ## ## ##
######### ## ##
## ## ## ##
## ## ## ##
## ## #######
###### ########
## ## ##
## ##
## #### ######
## ## ##
## ## ##
###### ########
最後に、コンテキストをスイッチしたときに変わってほしいので、 watch
コマンドで1秒毎に実行しています。あとは、Tmuxなどを使って画面の端などで常時稼働させておけば、コンテキストをスイッチしてもほぼリアルタイムで変わってくれます。
終わりに
kubectl config current-context
と figlet
を組み合わせて簡単に現在のコンテキストを表示できるようになりました。何かデプロイするときは、とりあえずこれをちらっと見て、今のコンテキストが正しいかチェックするようにしています(それでも忘れて別のクラスタにデプロイすることはあるんですが笑