前言
該項(xiàng)目脫胎于 mergeKubeConfig 項(xiàng)目佣盒,最早寫該項(xiàng)目的目的是在一堆雜亂無章的 kubeconfig 中自由的切換阿浓。隨著需要操作的 Kubernetes 集群越來越多蜂嗽,在不同的集群之間切換也越來越麻煩择示,而操作 Kubernetes 集群的本質(zhì)不過是通過 kubeconfig
訪問 Kubernetes 集群的 API Server阳准,以操作 Kubernetes 的各種資源源请,而 kubeconfig
不過是一個(gè) yaml 文件榛丢,用來保存訪問集群的密鑰铲球,最早的 mergeKubeConfig 不過是一個(gè)操作 yaml 文件的 Python 腳本。而隨著 golang 學(xué)習(xí)的深入晰赞,也就動(dòng)了重寫這個(gè)項(xiàng)目的念頭稼病,就這樣 kubecm 誕生了。
kubecm
kubecm 由 golang 編寫掖鱼,支持 Mac
Linux
和 windows
平臺(tái)然走,delete
rename
switch
提供比較實(shí)用的交互式的操作,目前的功能包括:
- add :添加新的
kubeconfig
到$HOME/.kube/config
中 - completion :命令行自動(dòng)補(bǔ)全功能
- delete:刪除已有的
context
戏挡,提供交互式和指定刪除兩種方式 - merge:將指定目錄中的
kubeconfig
合并為一個(gè)kubeconfig
文件 - rename:重名指定的
context
芍瑞,提供交互式和指定重命名兩種方式 - switch:交互式切換
context
安裝
kubecm 支持 Mac
Linux
和 windows
平臺(tái),安裝方式也比較簡(jiǎn)單:
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í)行文件褐墅,并將文件移動(dòng)到 $PATH
中即可
命令行自動(dòng)補(bǔ)全
kubecm 提供了和 kubectl 一樣的 completion 命令行自動(dòng)補(bǔ)全功能(支持 bash/zsh)
以 zsh
為例拆檬,在 $HOME/.zshrc
中添加
source <(kubecm completion zsh)
然后使用 source
命令,使其生效
source $HOME/.zshrc
之后妥凳,在輸入 kubecm
后按 <kbd>tab</kbd> 鍵竟贯,就可以看到命令行自動(dòng)補(bǔ)全的內(nèi)容
操作 kubeconfig
kubecm 可以實(shí)現(xiàn) kubeconfig
的查看、添加猾封、刪除澄耍、合并、重命名和切換
查看
# 查看 $HOME/.kube/config 中所有的 context
kubecm
添加
# 添加 example.yaml 到 $HOME/.kube/config.yaml晌缘,該方式不會(huì)覆蓋源 kubeconfig齐莲,只會(huì)在當(dāng)前目錄中生成一個(gè) config.yaml 文件
kubecm add -f example.yaml
# 功能同上,但是會(huì)將 example.yaml 中的 context 命名為 test
kubecm add -f example.yaml -n test
# 添加 -c 會(huì)覆蓋源 kubeconfig
kubecm add -f example.yaml -c
刪除
# 交互式刪除
kubecm delete
# 刪除指定 context
kubecm delete my-context
合并
# 合并 test 目錄中的 kubeconfig,該方式不會(huì)覆蓋源 kubeconfig磷箕,只會(huì)在當(dāng)前目錄中生成一個(gè) config.yaml 文件
kubecm merge -f test
# 添加 -c 會(huì)覆蓋源 kubeconfig
kubecm merge -f test -c
重命名
# 交互式重命名
kubecm rename
# 將 dev 重命名為 test
kubecm rename -o dev -n test
# 重命名 current-context 為 dev
kubecm rename -n dev -c
效果展示
結(jié)語
kubecm 項(xiàng)目的初衷為學(xué)習(xí) golang 并熟悉 client-go 的使用选酗,隨著使用的深入,斷斷續(xù)續(xù)增加了不少功能岳枷,開發(fā)出了一個(gè)看上去還算正規(guī)的項(xiàng)目芒填。總的來說都是根據(jù)自己的喜好來開發(fā)的業(yè)余項(xiàng)目空繁,歡迎各位通過 ISSUE 來進(jìn)行交流和討論殿衰。