其他
如何将多个 kubeconfig 文件合并为一个?
关注公众号并添加到“星标⭐”,防止错过消息
后台回复【资料包】获取学习资料
项目通常有多个 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
即可快速完成切换。
参考资料
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
推荐阅读
开源容器 Podman 常用命令总结!毫无争议的 GitHub 顶级开源项目排行榜Kruise 轻松让 K8S 应用实现渐进式交付图解 Kubernetes Pod 如何获取 IP 地址使用 Telepresence 轻松在本地调试 k8s 应用程序GitOps 工具选型,33 款工具任你挑!就在刚刚 k8s 1.24 正式发布,来看功能总览Nomad 会替代 Kubernetes 吗?两者如何选择?Docker 入门终极指南,详细版!漫画轻松看懂如何用 Kubernetes 实现 CI/CD阿里开源的低代码引擎,已收获 4.5K 星星新手必须知道的 Kubernetes 架构Kubernetes 架构核心点详细总结!