天天看點

Kubecm:管理你的 kubeconfig

Kubecm:管理你的 kubeconfig

前言

該項目脫胎于

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 鍵,就可以看到指令行自動補全的内容

Kubecm:管理你的 kubeconfig

操作 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           

效果展示

Kubecm:管理你的 kubeconfig

結語

項目的初衷為學習 golang 并熟悉 client-go 的使用,随着使用的深入,斷斷續續增加了不少功能,開發出了一個看上去還算正規的項目。總的來說都是根據自己的喜好來開發的業餘項目,歡迎各位通過

ISSUE

來進行交流和讨論。