首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将kubectl配置文件与~/.kube/config合并?

如何将kubectl配置文件与~/.kube/config合并?
EN

Stack Overflow用户
提问于 2017-09-13 03:37:05
回答 12查看 42.7K关注 0票数 91

是否有一个简单的kubectl命令可以将kubeconfig文件(包含cluster+context+user)作为附加上下文合并到~/.kube/config文件中?

EN

回答 12

Stack Overflow用户

发布于 2017-09-13 04:13:15

执行以下操作:

代码语言:javascript
运行
复制
export KUBECONFIG=~/.kube/config:~/someotherconfig 
kubectl config view --flatten

如果需要,您可以通过管道将其输出到新文件。

票数 150
EN

Stack Overflow用户

发布于 2019-07-22 18:13:12

如果你发现自己经常这样做...现在还有用于kubectlkrew插件包管理器。

krew插件"konfig“可以帮助您管理~/.kube/config文件。

使用konfig插件时,语法将为:

kubectl konfig import -s new.yaml

要安装krewhttps://github.com/kubernetes-sigs/krew

要安装konfigkubectl krew install konfig

票数 48
EN

Stack Overflow用户

发布于 2019-08-13 21:37:43

一次使用多个kubeconfigs

有时你有一堆小的kubeconfig文件(例如,每个集群一个),但你想一次使用所有这些文件,使用kubectlkubectx等工具,这些工具可以同时处理多个上下文。

为此,您需要一个“合并”的kubeconfig文件。在下面的“合并kubeconfig文件”一节中,我们解释了如何将kubeconfigs合并为一个文件,但也可以在内存中合并它们。

通过在KUBECONFIG环境变量中指定多个文件,您可以临时将kubeconfig文件缝合在一起,并在kubectl中使用它们。

代码语言:javascript
运行
复制
#
# Kubeconfig in-memory merge
#
export KUBECONFIG=file1:file2
kubectl get pods --context=cluster-1
kubectl get pods --context=cluster-2

#
# For your example
# merging your kubeconfig file w/ $HOME/.kube/config (w/ cp backup)
#
cp $HOME/.kube/config $HOME/.kube/config.backup.$(date +%Y-%m-%d.%H:%M:%S)
KUBECONFIG= $HOME/.kube/config:file2: kubectl config view --merge --flatten > \
~/.kube/merged_kubeconfig && mv ~/.kube/merged_kubeconfig ~/.kube/config
kubectl get pods --context=cluster-1
kubectl get pods --context=cluster-2

合并kubeconfig文件

因为kubeconfig文件是结构化的YAML文件,你不能简单地附加它们来得到一个大的kubeconfig文件,但是kubectl可以帮助你合并这些文件:

代码语言:javascript
运行
复制
#
# Merging your kubeconfig file w/ $HOME/.kube/config (w/ cp backup)
#
cp $HOME/.kube/config $HOME/.kube/config.backup.$(date +%Y-%m-%d.%H:%M:%S)
KUBECONFIG=$HOME/.kube/config:file2:file3 kubectl config view --merge --flatten > \
~/.kube/merged_kubeconfig && mv ~/.kube/merged_kubeconfig ~/.kube/config
kubectl get pods --context=cluster-1
kubectl get pods --context=cluster-2

从kubeconfig文件提取上下文

假设您遵循了合并kubeconfig文件之前的,并在$HOME/.kube/config中合并了一个kubeconfig文件。现在,您希望将集群的信息提取到一个可移植的kubeconfig文件中,该文件只包含连接到该集群所需的部分。

运行:

代码语言:javascript
运行
复制
KUBECONFIG=$HOME/.kube/config kubectl config view \
    --minify --flatten --context=context-1 > $HOME/.kube/config-context-1

#
# using --kubeconfig flag
#
kubectl get pods --kubeconfig=$HOME/.kube/config-context-1

#
# or 
# using `KUBECONFIG` environment variable
#
KUBECONFIG=$HOME/.kube/config-context-1 kubectl get pods

#
# or 
# keep using kubeconfig file at $HOME/.kube/config (which has the merged context)
#
kubectl get pods --context=cluster-1

在此命令中,我们将有关context-1的数据从$HOME/.kube/config提取到config-context-1文件。--minify标志允许我们仅提取关于该上下文的信息,而--flatten标志允许我们保持凭证未经编辑。

参考文章: https://ahmet.im/blog/mastering-kubeconfig/

票数 27
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46184125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档