Kubecm:管理你的 kubeconfig

封面

前言

該項目脫胎于 mergeKubeConfig 項目,最早寫該項目的目的是在一堆雜亂無章的 kubeconfig 中自由的切換。隨著需要操作的 Kubernetes 集群越來越多,在不同的集群之間切換也越來越麻煩,而操作 Kubernetes 集群的本質(zhì)不過是通過 kubeconfig 訪問 Kubernetes 集群的 API Server,以操作 Kubernetes 的各種資源,而 kubeconfig 不過是一個 yaml 文件,用來保存訪問集群的密鑰,最早的 mergeKubeConfig 不過是一個操作 yaml 文件的 Python 腳本。而隨著 golang 學(xué)習(xí)的深入,也就動了重寫這個項目的念頭,就這樣 kubecm 誕生了。

kubecm

kubecm 由 golang 編寫,支持 Mac Linuxwindows 平臺,delete rename switch 提供比較實用的交互式的操作,目前的功能包括:

  • add :添加新的 kubeconfig$HOME/.kube/config
  • completion :命令行自動補全功能
  • delete:刪除已有的 context ,提供交互式和指定刪除兩種方式
  • merge:將指定目錄中的 kubeconfig 合并為一個 kubeconfig 文件
  • rename:重名指定的 context,提供交互式和指定重命名兩種方式
  • switch:交互式切換 context

安裝

kubecm 支持 Mac Linuxwindows 平臺,安裝方式也比較簡單:

MacOS

使用 brew 或者直接下載二進(jìn)制可執(zhí)行文件

brew install sunny0826/tap/kubecm

Linux

下載二進(jìn)制可執(zhí)行文件

# linux x86_64
curl -Lo kubecm.tar.gz https://github.com/sunny0826/kubecm/releases/download/v${VERSION}/kubecm_${VERSION}_Linux_x86_64.tar.gz
tar -zxvf kubecm.tar.gz kubecm
cd kubecm
sudo mv kubecm /usr/local/bin/

Windows

下載二進(jìn)制可執(zhí)行文件,并將文件移動到 $PATH 中即可

命令行自動補全

kubecm 提供了和 kubectl 一樣的 completion 命令行自動補全功能(支持 bash/zsh)

zsh 為例,在 $HOME/.zshrc 中添加

source <(kubecm completion zsh)

然后使用 source 命令,使其生效

source $HOME/.zshrc

之后,在輸入 kubecm 后按 <kbd>tab</kbd> 鍵,就可以看到命令行自動補全的內(nèi)容

image

操作 kubeconfig

kubecm 可以實現(xiàn) kubeconfig 的查看、添加、刪除、合并、重命名和切換

查看

# 查看 $HOME/.kube/config 中所有的 context
kubecm

添加

# 添加 example.yaml 到 $HOME/.kube/config.yaml,該方式不會覆蓋源 kubeconfig,只會在當(dāng)前目錄中生成一個 config.yaml 文件
kubecm add -f example.yaml

# 功能同上,但是會將 example.yaml 中的 context 命名為 test
kubecm add -f example.yaml -n test

# 添加 -c 會覆蓋源 kubeconfig
kubecm add -f example.yaml -c

刪除

# 交互式刪除
kubecm delete
# 刪除指定 context
kubecm delete my-context

合并

# 合并 test 目錄中的 kubeconfig,該方式不會覆蓋源 kubeconfig,只會在當(dāng)前目錄中生成一個 config.yaml 文件
kubecm merge -f test 

# 添加 -c 會覆蓋源 kubeconfig
kubecm merge -f test -c

重命名

# 交互式重命名
kubecm rename
# 將 dev 重命名為 test
kubecm rename -o dev -n test
# 重命名 current-context 為 dev
kubecm rename -n dev -c

效果展示

ezgif.com-optimize.gif

結(jié)語

kubecm 項目的初衷為學(xué)習(xí) golang 并熟悉 client-go 的使用,隨著使用的深入,斷斷續(xù)續(xù)增加了不少功能,開發(fā)出了一個看上去還算正規(guī)的項目??偟膩碚f都是根據(jù)自己的喜好來開發(fā)的業(yè)余項目,歡迎各位通過 ISSUE 來進(jìn)行交流和討論。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容