使用kubecm管理kubeconfig

kubecm是國內(nèi)某位大神自己寫的項目嘶朱,可以合并多個kubeconfig文件蛾坯,切換集群等。項目地址疏遏。如果你是用的bash環(huán)境脉课,需要安裝至少0.8.2版本(之前版本在bash環(huán)境下無法命令補(bǔ)全救军,聯(lián)系作者修復(fù)后的版本為0.8.2)。

此文檔環(huán)境: centos7.6 倘零、kubectl1.14.8唱遭、kubecm0.8.2

kubecm

kubecm 由 golang 編寫,支持 Mac Linuxwindows 平臺呈驶,delete rename switch 提供比較實用的交互式的操作拷泽,目前的功能包括:

  • add :添加新的 kubeconfig$HOME/.kube/config
  • completion :命令行自動補(bǔ)全功能
  • delete:刪除已有的 context ,提供交互式和指定刪除兩種方式
  • merge:將指定目錄中的 kubeconfig 合并為一個 kubeconfig 文件
  • rename:重名指定的 context袖瞻,提供交互式和指定重命名兩種方式
  • switch:交互式切換 context

kubeconfig文件結(jié)構(gòu)

kubeconfig 文件主要由下面幾部分構(gòu)成: 集群參數(shù)司致、用戶參數(shù)、上下文參數(shù)聋迎、當(dāng)前上下文

apiVersion: v1
clusters: #集群參數(shù)
- cluster:
    certificate-authority-data: 
    server: https://172.16.xx.xx:6443
  name: cluster1
contexts: #上下文參數(shù)
- context:
    cluster: cluster1
    user: admin
  name: context-cluster1-admin #集群上下文名稱
current-context: context-cluster1-admin # 當(dāng)前上下文
kind: Config
preferences: {}
users: #用戶參數(shù)
- name: admin
  user:
    client-certificate-data: 
    client-key-data: 

kubecm安裝

$ wget https://github.com/sunny0826/kubecm/releases/download/v0.8.2/kubecm_0.8.2_Linux_x86_64.tar.gz
$ tar -zxvf kubecm_0.8.2_Linux_x86_64.tar.gz
$ mv kubecm /usr/local/bin/

命令行自動補(bǔ)全

bash

$ source <(kubecm completion bash)
$ echo "source <(kubecm completion bash)" >> ~/.bashrc
$ source  ~/.bashrc

zsh

$ source <(kubecm completion zsh)
$ echo "source <(kubecm completion zsh)" >> ~/.zshrc
$ source  ~/.zshrc

kubecm使用

查看

# 查看 $HOME/.kube/config 中所有的 context
$ +------------+---------------------------+-------------+----------+--------------+
|   CURRENT  |            NAME           |   CLUSTER   |   USER   |   Namespace  |
+============+===========================+=============+==========+==============+
|      *     |   context-cluster1-admin  |   cluster1  |   admin  |              |
+------------+---------------------------+-------------+----------+--------------+
...

添加

# 添加 example.yaml(也可以直接用config文件) 到 $HOME/.kube/config.yaml脂矫,該方式不會覆蓋源 kubeconfig,只會在當(dāng)前目錄中生成一個 config.yaml 文件
# 我這里沒用.yaml文件砌庄。直接用的config文件
$ ls
all_config  config-aliyun
$ kubecm add -f config-aliyun
generate ./config.yaml
$ ls
all_config  config-aliyun  config.yaml


# 功能同上羹唠,但是會將 example.yaml 中的 context 命名為 test
$ kubecm add -f config-aliyun -n test
generate ./config.yaml


# 添加 -c 會覆蓋源 kubeconfig
$ kubecm add -f config-aliyun -c
「config-aliyun」 add successful!
+------------+---------------------------+-----------------------+--------------------+--------------+
|   CURRENT  |            NAME           |        CLUSTER        |        USER        |   Namespace  |
+============+===========================+=======================+====================+==============+
|            |       config-aliyun       |   cluster-bh6mb7k26h  |   user-bh6mb7k26h  |              |
+------------+---------------------------+-----------------------+--------------------+--------------+
|      *     |   context-cluster1-admin  |        cluster1       |        admin       |              |
+------------+---------------------------+-----------------------+--------------------+--------------+

刪除

# 交互式刪除
$ kubecm delete
Use the arrow keys to navigate: ↓ ↑ → ←  and / toggles search
Select The Delete Kube Context
  ?? context-cluster1-admin(*)
    config-aliyun
    <Exit>

--------- Info ----------
Name:           context-cluster1-admin
Cluster:        cluster1
User:           admin

# 刪除指定context
$  kubecm delete config-aliyun
Context Delete:「config-aliyun」

合并

# 合并 all_config 目錄中的 kubeconfig,該方式不會覆蓋源 kubeconfig,只會在當(dāng)前目錄中生成一個 config.yaml 文件
$ kubecm merge -f all_config/
Loading kubeconfig file: [all_config//config-154 all_config//config-202]
Context Add: config-154
Context Add: config-202
# 添加 -c 會覆蓋源 kubeconfig
$ kubecm merge -f all_config/ -c
Loading kubeconfig file: [all_config//config-154 all_config//config-202]
Context Add: config-154
Context Add: config-202

$ kubecm
+------------+---------------+-----------------------+--------------------+--------------+
|   CURRENT  |      NAME     |        CLUSTER        |        USER        |   Namespace  |
+============+===============+=======================+====================+==============+
|            |   config-154  |   cluster-8ft42c2chh  |   user-8ft42c2chh  |              |
+------------+---------------+-----------------------+--------------------+--------------+
|      *     |   config-202  |   cluster-h55g4kbd78  |   user-h55g4kbd78  |              |
+------------+---------------+-----------------------+--------------------+--------------+
...

重命名

# 交互式重命名
$ kubecm rename
?? Select:config-202
Rename: congig-202-1█
+------------+-----------------+-----------------------+--------------------+--------------+
|   CURRENT  |       NAME      |        CLUSTER        |        USER        |   Namespace  |
+============+=================+=======================+====================+==============+
|      *     |   congig-202-1  |   cluster-h55g4kbd78  |   user-h55g4kbd78  |              |
+------------+-----------------+-----------------------+--------------------+--------------+
|            |    config-154   |   cluster-8ft42c2chh  |   user-8ft42c2chh  |              |
+------------+-----------------+-----------------------+--------------------+--------------+

# 將 congig-202-1 重命名為 test
$ kubecm rename -o congig-202-1 -n test
+------------+---------------+-----------------------+--------------------+--------------+
|   CURRENT  |      NAME     |        CLUSTER        |        USER        |   Namespace  |
+============+===============+=======================+====================+==============+
|            |   config-154  |   cluster-8ft42c2chh  |   user-8ft42c2chh  |              |
+------------+---------------+-----------------------+--------------------+--------------+
|      *     |      test     |   cluster-h55g4kbd78  |   user-h55g4kbd78  |              |
+------------+---------------+-----------------------+--------------------+--------------+
# 重命名當(dāng)前current-context 為 dev
$ kubecm rename -n dev -c
Rename test to dev
+------------+---------------+-----------------------+--------------------+--------------+
|   CURRENT  |      NAME     |        CLUSTER        |        USER        |   Namespace  |
+============+===============+=======================+====================+==============+
|            |   config-154  |   cluster-8ft42c2chh  |   user-8ft42c2chh  |              |
+------------+---------------+-----------------------+--------------------+--------------+
|      *     |      dev      |   cluster-h55g4kbd78  |   user-h55g4kbd78  |              |
+------------+---------------+-----------------------+--------------------+--------------+

切換

# 集群切換
$ kubecm switch
Use the arrow keys to navigate: ↓ ↑ → ←  and / toggles search
Select Kube Context
  ?? config-154(*)
    dev
    <Exit>

--------- Info ----------
Name:           config-154
Cluster:        cluster-8ft42c2chh
User:           user-8ft42c2chh

# 切換命名空間
$ kubecm ns
Use the arrow keys to navigate: ↓ ↑ → ←  and / toggles search
Select Namespace:
↑ ??  default *
   demo
   dev
↓  exdns

參考鏈接

github

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末娄昆,一起剝皮案震驚了整個濱河市佩微,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌萌焰,老刑警劉巖哺眯,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異扒俯,居然都是意外死亡奶卓,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進(jìn)店門撼玄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來夺姑,“玉大人,你說我怎么就攤上這事掌猛≌嫡悖” “怎么了?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵荔茬,是天一觀的道長废膘。 經(jīng)常有香客問我,道長慕蔚,這世上最難降的妖魔是什么丐黄? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮孔飒,結(jié)果婚禮上灌闺,老公的妹妹穿的比我還像新娘艰争。我一直安慰自己,他們只是感情好桂对,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布园细。 她就那樣靜靜地躺著,像睡著了一般接校。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上狮崩,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天蛛勉,我揣著相機(jī)與錄音,去河邊找鬼睦柴。 笑死诽凌,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的坦敌。 我是一名探鬼主播侣诵,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼狱窘!你這毒婦竟也來了杜顺?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤蘸炸,失蹤者是張志新(化名)和其女友劉穎躬络,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體搭儒,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡穷当,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了淹禾。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片馁菜。...
    茶點(diǎn)故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖铃岔,靈堂內(nèi)的尸體忽然破棺而出汪疮,到底是詐尸還是另有隱情,我是刑警寧澤德撬,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布铲咨,位于F島的核電站,受9級特大地震影響蜓洪,放射性物質(zhì)發(fā)生泄漏纤勒。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一隆檀、第九天 我趴在偏房一處隱蔽的房頂上張望摇天。 院中可真熱鬧粹湃,春花似錦、人聲如沸泉坐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽腕让。三九已至孤钦,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間纯丸,已是汗流浹背偏形。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留觉鼻,地道東北人俊扭。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像坠陈,于是被迫代替她去往敵國和親萨惑。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評論 2 354