是否有一个简单的kubectl命令来获取kubeconfig文件(包含集群+上下文+用户)并将其合并到〜/ .kube/config文件中作为附加上下文?
jax*_*orm 47
做这个:
KUBECONFIG=~/.kube/config:~/someotherconfig
kubectl config view --flatten
Run Code Online (Sandbox Code Playgroud)
然后,您可以根据需要将其传输到新文件.
Exe*_*ero 26
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
Run Code Online (Sandbox Code Playgroud)
由于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
Run Code Online (Sandbox Code Playgroud)
比方说,你跟着前合并kubeconfig文件,并有合并kubeconfig文件$HOME/.kube/config。现在您想将集群的信息提取到一个可移植的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
Run Code Online (Sandbox Code Playgroud)
在这个命令中,我们context-1从$HOME/.kube/configtoconfig-context-1文件中提取数据。该--minify标志允许我们仅提取有关该上下文的信息,并且该--flatten标志允许我们保持凭据未编辑。
参考文章: https : //ahmet.im/blog/mastering-kubeconfig/
如果您想将两个配置文件合并为一个
我找到了这种方式(不确定这是否最简单)
# Add the two config files to the env var
export KUBECONFIG=~/.kube/config:~/Desktop/configFile2.yaml
# Review that you have two configurations in one view
kubectl config view
# View the raw config and output to a new file
kubectl config view --raw > /tmp/config
Run Code Online (Sandbox Code Playgroud)
然后将新的配置文件复制到您想要的位置,也不要忘记到unset KUBECONFIGenv 变量
如果您发现这样做很多。.现在还有kubectl的'krew'插件包管理器。还有一个用于管理./kube/config文件的插件。
使用“ konfig”插件的语法为:
kubectl konfig import -s new.yaml
要安装krew:https : //github.com/kubernetes-sigs/krew
小智 6
有可能,请按照以下步骤操作:
从您的配置文件创建备份:
cp ~/.kube/config-bkp
使用您的新配置文件创建一个文件:
vi ~/.kube/new-config
将它们合并到配置中:
KUBECONFIG=~/.kube/config:~/.kube/new-config kubectl config view --flatten > ~/.kube/config
要查看可用的上下文,请使用:
kubectl config get-contexts
要更改上下文使用:
kubectl config use-context YOUR-CONTEXT-NAME
| 归档时间: |
|
| 查看次数: |
7244 次 |
| 最近记录: |