0

是否有一种简单的方法可以通过传递包含 kubeconfig 的 YAML 的变量来为 Python Kubernetes 客户端创建配置对象?

执行以下操作相当容易:

from kubernetes import client, config, watch
def main():
    config.load_kube_config()

或者

from kubernetes import client, config, watch
def main():
    config.load_incluster_config()

但我想使用 YAML kubeconfig 基于变量创建配置,假设我有:

k8s_config = yaml.safe_load('''
apiVersion: v1
clusters:
- cluster:
    insecure-skip-tls-verify: true
    server: https://asdf.asdf:443
  name: cluster
contexts:
- context:
    cluster: cluster
    user: admin
  name: admin
current-context: admin
kind: Config
preferences: {}
users:
- name: admin
  user:
    client-certificate-data: LS0tVGYUZiL2sxZlRFTkQgQ0VSVElGSUNBVEUtLS0tLQo=
    client-key-data: LS0tLS1CRUdJTiBSU0EgU0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo=
''')

我想将它加载为:

config.KubeConfigLoader(k8s_config)

这样做的原因是我无法在加载配置之前存储 kubeconfig 的内容。

我收到的错误是:“错误:模块'kubernetes.config'没有属性'KubeConfigLoader'”

4

1 回答 1

0

它们不包含KubeConfigLoader在里面的“上拉”中config/__init__.py,这就是您的kubernetes.config.KubeConfigLoader参考不起作用的原因。您将不得不进入实现包并专门引用该类:

from kubernetes.config.kube_config import KubeConfigLoader

k8s_config = yaml.safe_load('''...''')
config = KubeConfigLoader(
    config_dict=k8s_config,
    config_base_path=None)

请注意,与我的大多数答案不同,我实际上并没有运行这个,但这就是理论

于 2020-05-28T16:07:03.513 回答