
前言
該項目脫胎于
mergeKubeConfig項目,最早寫該項目的目的是在一堆雜亂無章的 kubeconfig 中自由的切換。随着需要操作的 Kubernetes 叢集越來越多,在不同的叢集之間切換也越來越麻煩,而操作 Kubernetes 叢集的本質不過是通過
kubeconfig
通路 Kubernetes 叢集的 API Server,以操作 Kubernetes 的各種資源,而
kubeconfig
不過是一個 yaml 檔案,用來儲存通路叢集的密鑰,最早的
不過是一個操作 yaml 檔案的 Python 腳本。而随着 golang 學習的深入,也就動了重寫這個項目的念頭,就這樣
kubecm誕生了。
由 golang 編寫,支援
Mac
Linux
和
windows
平台,
delete
rename
switch
提供比較實用的互動式的操作,目前的功能包括:
- add :添加新的
到kubeconfig
中$HOME/.kube/config
- completion :指令行自動補全功能
- delete:删除已有的
,提供互動式和指定删除兩種方式context
- merge:将指定目錄中的
合并為一個kubeconfig
檔案kubeconfig
- rename:重名指定的
,提供互動式和指定重命名兩種方式context
- switch:互動式切換
context
安裝
支援
Mac
Linux
windows
平台,安裝方式也比較簡單:
MacOS
使用
brew
或者直接下載下傳二進制可執行檔案
brew install sunny0826/tap/kubecm
Linux
下載下傳二進制可執行檔案
# 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
下載下傳二進制可執行檔案,并将檔案移動到
$PATH
中即可
指令行自動補全
提供了和
kubectl一樣的 completion 指令行自動補全功能(支援 bash/zsh)
以
zsh
為例,在
$HOME/.zshrc
中添加
source <(kubecm completion zsh)
然後使用
source
指令,使其生效
source $HOME/.zshrc
之後,在輸入
kubecm
後按 tab 鍵,就可以看到指令行自動補全的内容
操作 kubeconfig
可以實作
kubeconfig
的檢視、添加、删除、合并、重命名和切換
檢視
# 檢視 $HOME/.kube/config 中所有的 context
kubecm
添加
# 添加 example.yaml 到 $HOME/.kube/config.yaml,該方式不會覆寫源 kubeconfig,隻會在目前目錄中生成一個 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,隻會在目前目錄中生成一個 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
效果展示
結語
項目的初衷為學習 golang 并熟悉 client-go 的使用,随着使用的深入,斷斷續續增加了不少功能,開發出了一個看上去還算正規的項目。總的來說都是根據自己的喜好來開發的業餘項目,歡迎各位通過
ISSUE來進行交流和讨論。