Как использовать несколько файлов ресурсов kubernetes через клиент python kubernetes, аналогичный kubectl apply -f

У меня есть файл с несколькими ресурсами kubernetes, который содержит разные ресурсы, которые должны применяться, например. определение развертывания, определение службы, pv, pvc и т. д. Есть ли способ использовать этот единственный файл через клиент python kubernetes для развертывания всех этих ресурсов одновременно? Хотя мой сценарий немного другой. У меня есть файл, который использует CRD вместе с пользовательскими объектами ресурсов Kubernetes, например, Развертывание + карта посла. Как добиться этого с помощью клиента python kubernetes?


person Vedant Pareek    schedule 02.03.2020    source источник


Ответы (3)


С клиентом вы должны делать их все отдельно. Когда у вас есть несколько документов в файле YAML, kubectl просто разделяет их за вас и выполняет вызов API для каждого из них.

person coderanger    schedule 02.03.2020
comment
Но как это сделать для CRD? - person Vedant Pareek; 02.03.2020
comment
Вы имеете в виду вызовы API для настраиваемых объектов? github.com/kubernetes-client/python/blob/ master / kubernetes / docs / показывает, как это сделать, также примеры созданы автоматически и ужасны. - person coderanger; 02.03.2020


вы можете использовать config.new_client_from_config для управления несколькими кластерами .

или используйте конфигурацию kube из dict, а не локального файла.

from kubernetes import client, config
from kubernetes.client import Configuration, ApiClient

def new_client_from_dict(conf: dict, context: str):
    """
    create client via conf dict
    """
    client_config = type.__call__(Configuration)
    config.load_kube_config_from_dict(config_dict=conf, context=context, persist_config=False,
                                  client_configuration=client_config)
    return ApiClient(configuration=client_config)

client1 = client.CoreV1Api(api_client=new_client_from_dict(CLUSTER1_KUBE_CONFIG, context='cluster1'))
client2 = client.CoreV1Api(api_client=new_client_from_dict(CLUSTER2_KUBE_CONFIG, context='cluster2'))
client1.list_namespaced_pod()
client2.list_namespaced_pod()
person lethe3000    schedule 23.10.2020