Kubernetesのコンテキストをいい感じにシェル上で表示する

kameneko
penguin-lab
Published in
4 min readMay 8, 2020

仕事で複数の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-contextfiglet を組み合わせて簡単に現在のコンテキストを表示できるようになりました。何かデプロイするときは、とりあえずこれをちらっと見て、今のコンテキストが正しいかチェックするようにしています(それでも忘れて別のクラスタにデプロイすることはあるんですが笑

--

--

kameneko
penguin-lab

PrometheusとかKubernetesとか物理、配信とかが好きなしがないエンジニアです。さくらインターネットという会社であれこれしています。ペンギンがとても、とても好き。