kubernetes Python API Client: выполнить полный файл yaml - PullRequest
0 голосов
/ 19 июня 2019

У Kubernetes есть очень хороший официальный клиент Python API.Клиент API предполагает, что вы будете создавать отдельные ресурсы (например, модули или службы), и предполагает, что вы будете использовать объекты Python для составления и создания запросов API.

Однако я хотел бы запускать произвольные файлы YAML для kubernetes (содержащие один или несколько ресурсов k8s) через интерфейс Python.Мне было интересно, можно ли использовать клиент Python kubernetes для применения произвольных файлов YAML?

Я в основном ищу Python-эквивалент:

kubectl apply -f some-file-containing-multiple-resources.yaml

Я ищу что-то, где я могу в основном загрузить kubeconfig и применить yaml через Python довольно Pythonic способом.

Я знаю, что, вероятно, могу обернуть команду kubectl вызовом подпроцесса Python, но я надеялся на что-то более Pythonic и надеялся, что основной клиент Python K8s может сделать что-то подобное.Или, если есть другой пакет Python, который делает что-то подобное.

Может ли клиент Python kubernetes вызывать произвольные файлы y8l для k8s, и если нет, то что-нибудь может?

Спасибо за чтение - я ценю любые советы, которые вы можете предложить.

1 Ответ

2 голосов
/ 20 июня 2019

Примеры этого есть в каталоге examples.В частности https://github.com/kubernetes-client/python/blob/master/examples/create_deployment.py, что делает:

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...