kubernetes

kube-prompt-bash作った

kube-prompt-bashとは

Bashのpromptに、kubectlで使用している クラスタ名・Namespace名・ユーザ名 を表示します。
以下サンプルです。kubensと呼ばれるコマンドで namespace をスイッチしていることに追従して、プロンプトの表示が変わっています

[root@sugi-kubernetes110-master01 ~(kubernetes default kubernetes-admin)]# kubens test
Context "kubernetes-admin@kubernetes" modified.
Active namespace is "test".
[root@sugi-kubernetes110-master01 ~(kubernetes test kubernetes-admin)]# 

カッコの中に、クラスタ名・ネームスペース名・ユーザ名を表示しています。
以下GitHubです。すごい簡素な造りなので、動作しない場合は教えてください

https://github.com/Sugi275/kube-prompt-bash

なんで作ったの?

Kubernetesを操作しているときに、どのネームスペースを操作しているのか、分からなくなる時が有りました。
プロンプト上に常に表示することで、現在操作している対象を確認したいため、作りました。

kube-ps1 とよばれるツールもありますが、私の環境では非常に重かったため、独自に作ってみました。
プロンプトでエンターを押す度に0.2秒ほどwait時間が発生しており、若干ストレスがありました。

https://github.com/jonmosco/kube-ps1

仕組み

以下のページをみればすぐわかりますが、kubectlが使用しているconfigファイルを読み込み、クラスタ名・Namespace名・ユーザ名を取得しています。
https://github.com/Sugi275/kube-prompt-bash/blob/master/kube-prompt-bash.sh

configファイルをparseしたいなと思いつつ、現状は grep や sed で取得しています。

環境依存っぽい気がしており、取得出来ない場合はすいません・・・。
気が向いたら改善していくかもしれません。