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

У меня есть многоресурсный файл kubernetes, который содержит различные ресурсы, которые должны применяться, например, для определения развертывания, определения службы, pv, pv c et c. Есть ли способ использовать этот единственный файл через клиент kubernetes python для развертывания всех этих ресурсов одновременно ? Хотя мой сценарий немного другой. У меня есть файл, в котором используются CRD вместе с пользовательскими объектами ресурсов kubernetes, например, Deployment + ambussian's Mapping . Как этого добиться, используя kubernetes python client ?

Ответы [ 2 ]

0 голосов
/ 02 марта 2020

У меня есть многоресурсный файл kubernetes. Можно ли использовать этот единственный файл через клиент python kubernetes для развертывания всех этих ресурсов одновременно ?

Пожалуйста, проверьте содержимое каталога examples.

    from os import path

    import yaml

    from kubernetes import client, config


    def main():
        # Configs can be set in Configuration class directly or using helper
        # utility. If no argument provided, the config will be loaded from
        # default location.
        config.load_kube_config()

        with open(path.join(path.dirname(__file__), "nginx-deployment.yaml")) as f:
            dep = yaml.safe_load(f)
            k8s_beta = client.ExtensionsV1beta1Api()
            resp = k8s_beta.create_namespaced_deployment(
                body=dep, namespace="default")
            print("Deployment created. status='%s'" % str(resp.status))


    if __name__ == '__main__':
        main()

Важное примечание: необходимо использовать тройные тире вверху файла yaml и промежуточные ресурсы, если он содержит более одного ресурса.

. ../utils/create_from_yaml.py и ... / examples / create_deployment_from_yaml.py также стоит проверить.

У меня есть файл, который использует CRD вместе с Пользовательские объекты ресурсов kubernetes

, как сказал @coderanger, пример можно найти в ... / docs / CustomObjectsApi.md

Надеюсь, это поможет.

0 голосов
/ 02 марта 2020

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

...