相信很多人都会经常部署不同的 Kubernetes
集群,也会经常删除不再使用的 Kubernetes
集群,如果要在本地通过 kubectl
客户端与集群进行交互,就需要不同的 kubeconfig
,然后通过环境变量或命令行参数不断来回切换 kubeconfig,或者手动将多个 kubeconfig 合并为一个,然后通过 kubectl 插件 kubectx[1] 或 kubie 来切换上下文环境(即 context
)。
那么有没有一种方法可以自动将多个 kubeconfig 文件合并成一个呢?手动合并也太麻烦了啊!
有个小哥和我也有同样的苦恼,索性写了一个自动化工具 kubectx.manager[2],可以将多个 kubeconfig 合并成一个,也可以从现有的 kubeconfig 文件中删除不想要的 context
。
安装方法很简单,首先需要有 nodejs
环境,然后通过下面的命令安装:
1 | $ npm install -g git+https://git@github.com/AveryanovS/kubectx.manager |
假设现在要合并多个 kubeconfig,只需执行命令,不带任何参数,然后就会有一系列交互动作:
1 | $ kubemanager |
- 第一行选择
merge
,表示合并。 - 第二行选择需要合并到哪个 kubeconfig,也就是你最终要用的 kubeconfig。
- 第三行选择需要合并的 kubeconfig。
- 第四行定义合并后新加入的
context
名称。
删除多余的 context 与上面类似,自己摸索一下。
合并多个 kubeconfig 之后还不行,需要一个能快速切换 context
的工具,不然每次都自己去 kubeconfig 中修改当前的 context
也太 low 了吧!
目前有两款插件都比较好用, kubectx[1] 或 kubie
,我推荐使用 kubie
,功能更强大,使用 rust 语言编写,你可以通过 cargo 来编译安装,也可以从 release 页面直接下载二进制文件。
脚注
[1]kubectx: https://github.com/ahmetb/kubectx
[2]kubectx.manager: https://github.com/AveryanovS/kubectx.manager