【问题标题】:Set KUBECONFIG environment variable dynamically动态设置 KUBECONFIG 环境变量
【发布时间】:2020-08-28 08:15:59
【问题描述】:

我对 Bash 很陌生,并且正在处理多个 kubernetes 集群。我想要某种实用程序,当我在多个集群上工作时,我可以动态地设置我的 KUBECONFIG 变量。我的 kubeconfig 文件位于多个文件夹中。我想要的是找到所有 kubeconfig 文件,获取路径并用冒号连接路径,将其设置为 KUBECONFIG 变量并将其导出到 bashrc 文件中。

我知道一些命令,但无法编写完整的代码。

find /Users/anandabhishe/gitlab/ -name kubeconfig.yaml -exec echo {} \; 

我想连接 find 命令的输出并设置我的 KUBECONFIG。像这样“

export KUBECONFIG=/Users/anandabhishe/gitlab/work2/kubeconfigs/scdc1-staging-hrwork-dev/kubeconfig.yaml:/Users/anandabhishe/gitlab/work2/kubeconfigs/scdc2-prod-hrwork-uat/kubeconfig.yaml:/Users/anandabhishe/gitlab/work2/kubeconfigs/scdc2-prod-hrwork/kubeconfig.yaml"

【问题讨论】:

  • 如果您编写了代码片段,您可以在此处分享,以便其他人了解您到底想要什么以及采用哪种方式。
  • 找到 /Users/anandabhishe/gitlab/ -name kubeconfig.yaml -exec echo {} \; ......我想连接find命令的输出并设置我的KUBECONFIG。像这样“ export KUBECONFIG=/Users/anandabhishe/gitlab/work2/kubeconfigs/scdc1-staging-hrwork-dev/kubeconfig.yaml:/Users/anandabhishe/gitlab/work2/kubeconfigs/scdc2-prod-hrwork-uat/kubeconfig. yaml:/Users/anandabhishe/gitlab/work2/kubeconfigs/scdc2-prod-hrwork/kubeconfig.yaml "

标签: bash shell find


【解决方案1】:

你可以试试这样的:

export KUBECONFIG=$(for i in $(find /Users/anandabhishe/gitlab/ -iname 'kubeconfig.yaml') ; do echo -n ":$i"; done | cut -c 2-)

【讨论】:

  • export KUBECONFIG=$(for YAML in $(find ${HOME}/.kube -name '*.yaml') ; do echo -n ":${YAML}"; done)
【解决方案2】:

您可以在单个文件中合并 (https://stackoverflow.com/a/63177022/5525824) 多个 kubeconfig 文件,并将其设置在 .kube 文件夹中并列出使用的 Kubernets 集群

kubectl config get-contexts

更改默认 Kubernetes 集群配置

kubectl config use-context

上述命令也将更改helm 的默认 Kubernetes 集群。

更多详情,您可以关注:https://kubernetes.io/docs/tasks/access-application-cluster/configure-access-multiple-clusters/

更新

你可以做类似的事情

find ./wotnot -name kubeconfig.yaml -print0

输出类似于

/Users/anandabhishe/gitlab/work2/kubeconfigs/scdc1-staging-hrwork-dev/kubeconfig.yaml./Users/anandabhishe/gitlab/work2/kubeconfigs/scdc2-prod-hrwork-uat/kubeconfig.yaml./Users/anandabhishe/gitlab/work2/kubeconfigs/scdc2-prod-hrwork/kubeconfig.yaml

将输出保存在一个变量中

使用sed将路径./替换为:

【讨论】:

  • 当您拥有静态数量的 kubeconfig 文件时,这很好。对我来说,kubeconfig 文件不断添加。我不想每次都手动合并。
  • 您可以编写 bash 代码将它们全部合并,或者编写简单的 bash 自动更改 Kubeconfig。
  • var1=find /Users/anandabhishe/gitlab/ -name kubeconfig.yaml var2=echo $var1 | tr " " : echo $var2 export KUBECONFIG=$var2 我把上面的东西放在了 bashrc 但它不起作用
  • sorry tr only do 1:1 可能不得不使用 sed
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-07
  • 2021-12-23
  • 2019-10-28
  • 2018-12-04
  • 2013-12-22
  • 2018-07-13
  • 2014-12-17
相关资源
最近更新 更多