根据目录让 oc 跟随一个集群

Have `oc` follow a cluster depending on directory

我对几个不同的集群使用 oc 工具。

因为我通常为我 view/modify 的任何 OpenShift 对象保留本地 yaml 文件,无论是临时的还是由于个别集群的某些配置管理方案,我在我的机器上为每个集群都有一个单独的目录(反过来,当然是在 git 中进行版本控制)。我们称它们为 ~/clusters/a/~/clusters/b/

现在。当我在本地机器上 cd 时,oc 命令使用全局 ~/.kube/config 来查找我上次登录的集群。或者换句话说,oc 根本不关心我在哪个目录中。

有没有办法让 oc 存储 "local" 配置(即在 ~/clusters/a/.kube_config 或类似的东西中),以便当我进入 ~/clusters/a/ 目录时,我会自动使用该集群,而无需使用 oc login?

显式切换集群

您可以设置KUBECONFIG环境变量来为每个集群指定不同的配置目录。您需要在每个单独的终端会话中将环境变量设置为相应的目录 window.

为了扩展 Graham 的回答,KUBECONFIG 可以指定一个配置文件列表,如果存在多个配置文件,这些文件将被合并。如 merging rules.

中所述,第一个设置特定值的人获胜

因此,您可以仅使用 current-context 添加本地配置,例如~/clusters/a/.kube_config 可能是

current-context: projecta/192-168-99-100:8443/developer

~/clusters/b/.kube_config

current-context: projectb/192-168-99-101:8443/developer

显然需要使用格式

为您的特定集群调整此项
current-context: <namespace>/<cluster>/<user>

然后设置KUBECONFIG相对路径和全局配置

export KUBECONFIG=./.kube_config:~/.kube/config

请注意,如果 ./.kube_config 不存在,它将被忽略。

然后 current-content 将被本地定义的覆盖。kube_config,如果存在的话。

我在本地用 2 个 minishift 集群测试了这个,它似乎工作正常。虽然还没有测试设置配置时的行为是什么。