Feed Python Клиент Kubernetes с heredo c вместо пути к файлу - PullRequest
0 голосов
/ 27 мая 2020

Есть ли простой способ создать объект конфигурации для Python клиента Kubernetes, передав переменную, содержащую YAML из kubeconfig?

Довольно легко сделать что-то вроде:

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' "

1 Ответ

0 голосов
/ 28 мая 2020

Они не включают 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)

Имейте в виду, что в отличие от большинства моих ответов, я на самом деле не запускал этот, но это теория

...