剧情:
我正在一个我们有 PROD 和 ITG 设置的 kubernetes 环境中工作。ITG 设置具有多集群环境,而 PROD 设置是单集群环境。我正在尝试使用 Python 自动化一些过程,我必须处理 kubeconfig 文件,并且我正在使用kubernetes库。
问题:
PROD 的 kubeconfig 文件具有可用的“current-context”键,但ITG 的 kubeconfig 文件中缺少相同的键。
配置文件:
apiVersion: v1
clusters:
- cluster:
insecure-skip-tls-verify: true
server: https://cluster3.url.com:3600
name: cluster-ABC
contexts:
- context:
cluster: cluster-LMN
user: cluster-user
name: cluster-LMN-context
current-context: cluster-LMN-context
kind: Config
preferences: {}
users:
- name: cluster-user
user:
exec:
command: kubectl
apiVersion: <clientauth/version>
args:
- kubectl-custom-plugin
- authenticate
- https://cluster.url.com:8080
- --user=user
- --token=/api/v2/session/xxxx
- --token-expiry=1000000000
- --force-reauth=false
- --insecure-skip-tls-verify=true
配置:
apiVersion: v1
clusters:
- cluster:
insecure-skip-tls-verify: true
server: https://cluster1.url.com:3600
name: cluster-ABC
- cluster:
insecure-skip-tls-verify: true
server: https://cluster2.url.com:3601
name: cluster-XYZ
contexts:
- context:
cluster: cluster-ABC
user: cluster-user
name: cluster-ABC-context
- context:
cluster: cluster-XYZ
user: cluster-user
name: cluster-XYZ-context
kind: Config
preferences: {}
users:
- name: cluster-user
user:
exec:
command: kubectl
apiVersion: <clientauth/version>
args:
- kubectl-custom-plugin
- authenticate
- https://cluster.url.com:8080
- --user=user
- --token=/api/v2/session/xxxx
- --token-expiry=1000000000
- --force-reauth=false
- --insecure-skip-tls-verify=true
当我尝试使用它为 PROD 加载 kubeconfig 文件config.load_kube_config(os.path.expanduser('~/.kube/prdconfig'))
时。
当我尝试使用 为 ITG 加载 kubeconfig 文件时config.load_kube_config(os.path.expanduser('~/.kube/itgconfig'))
,我收到以下错误:
ConfigException:无效的 kube-config 文件。C:\Users<username>/.kube/itgconfig 中的预期密钥当前上下文
尽管从错误消息中可以清楚地看出它认为 kubeconfig 文件无效,因为它没有“current-context”键。
子图:
使用 kubectl 时,缺少的“当前上下文”没有任何区别,因为我们总是可以在命令中指定上下文。但是 'load_kube_config()' 函数使得必须有“current-context”可用。
问题:
那么,“current-context”是 kubeconfig 文件中的强制键吗?
免责声明:
我对 Kubernetes 非常陌生,并且几乎没有使用它的经验。