Kubecm:管理你的 kubeconfig
前言
該專案脫胎於 mergeKubeConfig 專案,最早寫該專案的目的是在一堆雜亂無章的 kubeconfig 中自由的切換。隨著需要操作的 Kubernetes 叢集越來越多,在不同的叢集之間切換也越來越麻煩,而操作 Kubernetes 叢集的本質不過是通過 kubeconfig
訪問 Kubernetes 叢集的 API Server,以操作 Kubernetes 的各種資源,而 kubeconfig
不過是一個 yaml 檔案,用來儲存訪問叢集的金鑰,最早的 mergeKubeConfig 不過是一個操作 yaml 檔案的 Python 指令碼。而隨著 golang 學習的深入,也就動了重寫這個專案的念頭,就這樣
kubecm
kubecm 由 golang 編寫,支援 Mac
Linux
和 windows
平臺,delete
rename
switch
提供比較實用的互動式的操作,目前的功能包括:
- add :新增新的
kubeconfig
到$HOME/.kube/config
中 - completion :命令列自動補全功能
- delete:刪除已有的
context
,提供互動式和指定刪除兩種方式 - merge:將指定目錄中的
kubeconfig
合併為一個kubeconfig
檔案 - rename:重名指定的
context
,提供互動式和指定重新命名兩種方式 - switch:互動式切換
context
安裝
kubecm 支援 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
中即可
命令列自動補全
kubecm 提供了和 kubectl 一樣的 completion 命令列自動補全功能(支援 bash/zsh)
以 zsh
為例,在 $HOME/.zshrc
中新增
source <(kubecm completion zsh)複製程式碼
然後使用 source
命令,使其生效
source $HOME/.zshrc複製程式碼
之後,在輸入 kubecm
後按 tab 鍵,就可以看到命令列自動補全的內容
操作 kubeconfig
kubecm 可以實現 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複製程式碼
效果展示
結語
kubecm 專案的初衷為學習 golang 並熟悉 client-go 的使用,隨著使用的深入,斷斷續續增加了不少功能,開發出了一個看上去還算正規的專案。總的來說都是根據自己的喜好來開發的業餘專案,歡迎各位通過 ISSUE 來進行交流和討論。