是否有一个简单的kubectl命令可以将kubeconfig文件(包含cluster+context+user)作为附加上下文合并到~/.kube/config文件中?
发布于 2017-09-13 04:13:15
执行以下操作:
export KUBECONFIG=~/.kube/config:~/someotherconfig
kubectl config view --flatten如果需要,您可以通过管道将其输出到新文件。
发布于 2019-07-22 18:13:12
如果你发现自己经常这样做...现在还有用于kubectl的krew插件包管理器。
krew插件"konfig“可以帮助您管理~/.kube/config文件。
使用konfig插件时,语法将为:
kubectl konfig import -s new.yaml
要安装krew:https://github.com/kubernetes-sigs/krew
要安装konfig:kubectl krew install konfig
发布于 2019-08-13 21:37:43
一次使用多个kubeconfigs
有时你有一堆小的kubeconfig文件(例如,每个集群一个),但你想一次使用所有这些文件,使用kubectl或kubectx等工具,这些工具可以同时处理多个上下文。
为此,您需要一个“合并”的kubeconfig文件。在下面的“合并kubeconfig文件”一节中,我们解释了如何将kubeconfigs合并为一个文件,但也可以在内存中合并它们。
通过在KUBECONFIG环境变量中指定多个文件,您可以临时将kubeconfig文件缝合在一起,并在kubectl中使用它们。
#
# 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可以帮助你合并这些文件:
#
# 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文件中,该文件只包含连接到该集群所需的部分。
运行:
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://stackoverflow.com/questions/46184125
复制相似问题