查看原文
其他

如何将多个 kubeconfig 文件合并为一个?

able8 进击云原生 2022-11-10

关注公众号并添加到“星标⭐”,防止错过消息

后台回复【资料包】获取学习资料


项目通常有多个 k8s 集群环境,dev、testing、staging、prod,kubetcl 在多个环境中切换,操作集群 Pod 等资源对象,前提条件是将这三个环境的配置信息都写到本地机的 $HOME/.kube/config 文件中。

默认情况下kubectl会查找$HOME/.kube目录中命名为config的文件。那么,我们如何将多个 kubeconfig 文件合并为一个呢?

以下是步骤:

备份是个好习惯

cp $HOME/.kube/config $HOME/.kube/config-backup

设置KUBECONFIG环境变量

KUBECONFIG环境变量是配置文件的路径列表,例如/path/cluster1:/path/cluster2:/path/cluster3

export KUBECONFIG=$HOME/.kube/config:/path/cluster1:/path/cluster2

如果当前目录下有很多 kubeconfig 文件,可以使用以下命令快速设置KUBECONFIG 环境变量。

$ cd $HOME/.kube
$ ls $HOME/.kube
config-dev config-testing config-staging config-prod

$
 export KUBECONFIG=$HOME/.kube/config:$(find $HOME/.kube -type f -maxdepth 1 | grep config | tr '\n' ':')

将所有 kubeconfig 文件合并为一个

kubectl config view --flatten > all-in-one-kubeconfig.yaml

验证它是否有效

显示在 kubeconfig 中定义的所有集群:

kubectl config get-contexts --kubeconfig=$HOME/.kube/all-in-one-kubeconfig.yaml

用新合并的配置文件替换旧配置文件

mv all-in-one-kubeconfig.yaml $HOME/.kube/config

总结

其他快捷工具还有 kubectx[1],它可以比 kubectl 更快地在上下文(集群)之间切换,但还是依赖于 config 的合并。

也可以使用国人开源的 ki[2] 命令行工具,不用合并 config,直接使用ki -s即可快速完成切换。

参考资料

[1]

kubectx: https://github.com/ahmetb/kubectx

[2]

ki: https://github.com/ywgx/ki

https://kubernetes.io/docs/tasks/access-application-cluster/configure-access-multiple-clusters

- END -



后台回复“加群”,带你进入高手交流群


推荐阅读
开源容器 Podman 常用命令总结!毫无争议的 GitHub 顶级开源项目排行榜Kruise 轻松让 K8S 应用实现渐进式交付图解 Kubernetes Pod 如何获取 IP 地址使用 Telepresence 轻松在本地调试 k8s 应用程序GitOps 工具选型,33 款工具任你挑!就在刚刚 k8s 1.24 正式发布,来看功能总览Nomad 会替代 Kubernetes 吗?两者如何选择?Docker 入门终极指南,详细版!漫画轻松看懂如何用 Kubernetes 实现 CI/CD阿里开源的低代码引擎,已收获 4.5K 星星新手必须知道的 Kubernetes 架构Kubernetes 架构核心点详细总结!


全网粉丝20W的头部大号,专注云原生、Golang、Linux实用脚本,效率工具,免费CSDN下载,回复【go】获取近 6 万 Star 的资源回复【1024】获取全种类IT资料,回复【红包封面】获取超好看封面,回复【加群】进入高手如云技术交流群

分享、点赞和在看
支持我们分享更多好文章,谢谢!
                
 点个在看集群永保稳定👇

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存