使用 kubie 优雅的管理多集群 kubeconfig
传统的方案:kubectx 与 kubens
如果你有很多 kubernetes 集群,经常需要切换集群来执行各种操作,如何方便的切换和管理呢?
传统的做法可能是将所有集群 kubeconfig 合并到同一个文件,然后利用 kubectx
,kubens
这种 context 和 namespace 的切换工具方便的在各个集群和 namesapce 之间切换,这样可行,但有一些问题:
- 所有 kubeconfig 合并到一起,维护起来比较麻烦。
- 一些状态类也会记录到 kubeconfig,如当前 context 和当前命名空间,如果想将 kubeconfig 文件通过 git 在多个机器里同步,就不太合适。
更优雅的方案:kubie
kubie 是一个 Rust 实现的 kubernetes 多集群管理工具,可发现指定目录下的所有 kubeconfig 文件,切换 context 时可选择任意 kubeconfig 中的集群,任意切换 ns,它不会修改 kubeconfig 文件,多个 shell 操作也互不干扰。
相比 kubectx
与 kubens
,kubie
的好处是:
- kubeconfig 文件可任意组织管理,维护起来更优雅。一般建议是一个集群一个 kubeconfig 文件,用文件名作为集群名称(kubie ctx 选择集群时,使用去除后缀的文件名作为集群名)。
- kubie 不会去修改 kubeconfig 文件,方便将 kubeconfig 使用 git 管理,在多个机器中同步。
- 不同 shell 操作不同集群,互不干扰,提高效率。
安装 kubie
kubie 的安装可参考 官方文档: Installation。
由于我的环境都有 Rust 环境,所以 直接用 cargo 安装:
cargo install kubie
如果你用 MacOS,也可以直接用 brew 安装:
brew install kubie
配置自动补全
kubie 的自动补全可参考 官方文档: Autocompletion。
我使用的 fish shell,所以直接拷贝 completion/kubie.fish
到 ~/.config/fish/completions/kubie.fish
即可。