首页 > 解决方案 > 在 kubectl 配置中使用具有相同用户名的多个上下文

问题描述

我想使用多个集群,kubectl所以我要么将所有内容放入一个配置中,要么将每个集群的一个配置文件添加到KUBECONFIGenv 变量中。没关系。

我现在的问题是,我的每个集群都有相同用户名的用户,但他们client-key-data对每个集群(上下文)使用不同的用户名,但不知何故,上下文使用了该用户名,因此不清楚哪个用户属于哪个集群。

最好举个例子:

集群 1:

apiVersion: v1
kind: Config
clusters:
- cluster:
    server: https://10.11.12.13:8888
  name: team-cluster
contexts:
- context:
    cluster: team-cluster
    user: kubernetes-admin
  name: kubernetes-admin@team-cluster
users:
- name: kubernetes-admin
  user:
    client-certificate-data: XXYYYZZZ
    client-key-data: XXXYYYZZZ

集群 2:

apiVersion: v1
kind: Config
clusters:
- cluster:
    server: https://10.11.12.14:8888
  name: dev-cluster
contexts:
- context:
    cluster: dev-cluster
    user: kubernetes-admin
  name: kubernetes-admin@dev-cluster
users:
- name: kubernetes-admin
  user:
    client-certificate-data: AABBCC
    client-key-data: AABBCC

如您所见,在两个集群中都有一个具有名称的用户,kubernetes-admin但从上下文中不清楚是哪一个。也许还有另一种方法可以给它一个上下文使用的唯一标识符。

也许解决方案是显而易见的,但我没有找到这种情况的任何例子。谢谢你的帮助。

标签: kuberneteskubectl

解决方案


我的配置有同样的问题,发现用户中的名称不是用于登录的用户名 - 它只是用于识别配置中的用户部分的名称。在您的情况下,只有证书密钥用于知道您是谁。所以你可以使用:

users:
- name: kubernetes-admin-1
  user:
    client-certificate-data: AABBCC
    client-key-data: AABBCC
- name: kubernetes-admin-2
  user:
    client-certificate-data: XXYYYZZZ
    client-key-data: XXXYYYZZZ

并在上下文中按键引用:

contexts:
- context:
    cluster: dev-cluster
    user: kubernetes-admin-1

完整配置:

apiVersion: v1
kind: Config
clusters:
- cluster:
    server: https://10.11.12.13:8888
  name: team-cluster
- cluster:
    server: https://10.11.12.14:8888
  name: dev-cluster
contexts:
- context:
    cluster: team-cluster
    user: kubernetes-admin-1
  name: kubernetes-admin@team-cluster
- context:
    cluster: dev-cluster
    user: kubernetes-admin-2
  name: kubernetes-admin@dev-cluster
users:
- name: kubernetes-admin-1
  user:
    client-certificate-data: XXYYYZZZ
    client-key-data: XXXYYYZZZ
- name: kubernetes-admin-2
  user:
    client-certificate-data: AABBCC
    client-key-data: AABBCC

对于需要用户名的身份验证方法,它使用如下内容:

users:
- name: kubernetes-admin-with-password
  user:
    username: kubernetes-admin
    password: mySecretPass

使用多个 kubeconfig 不太舒服 - 您需要为每个命令指定它们。如果您想在一个配置中选择正确的上下文(并将选定的上下文保存为默认值),您可以拥有尽可能多的上下文和用户。


推荐阅读