1. 程式人生 > 程式設計 >Kubecm:管理你的 kubeconfig

Kubecm:管理你的 kubeconfig

封面

前言

該專案脫胎於 mergeKubeConfig 專案,最早寫該專案的目的是在一堆雜亂無章的 kubeconfig 中自由的切換。隨著需要操作的 Kubernetes 叢集越來越多,在不同的叢集之間切換也越來越麻煩,而操作 Kubernetes 叢集的本質不過是通過 kubeconfig 訪問 Kubernetes 叢集的 API Server,以操作 Kubernetes 的各種資源,而 kubeconfig 不過是一個 yaml 檔案,用來儲存訪問叢集的金鑰,最早的 mergeKubeConfig 不過是一個操作 yaml 檔案的 Python 指令碼。而隨著 golang 學習的深入,也就動了重寫這個專案的念頭,就這樣

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 或者直接下載二進位制可執行檔案

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 鍵,就可以看到命令列自動補全的內容

image

操作 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 來進行交流和討論。