Kubernetes有一个非常好的官方Python API客户端,API客户端假设您将创建单独的资源(如pod或服务),并假设您将使用Python对象来编写和创建API请求。
但是,我想通过Python接口运行任意的kubernetes YAML文件(包含一个或多个k8s资源)。我想知道Python kubernetes客户端是否可以用于应用任意的YAML文件?
我基本上是在寻找Python的等价物:
kubectl apply -f some-file-containing-multiple-resources.yaml
我正在寻找一个基本上可以加载kubeconfig并通过Python以相当Python的方式应用yaml的东西。
我知道我可以用Python子进程调用来 Package kubectl命令,但我希望比这更像Python,希望核心K8s Python客户端可以做类似的事情,或者,如果有其他Python包做类似的事情。
Python kubernetes客户端可以调用任意的k8s yaml文件吗?如果不能,有什么可以调用的吗?
谢谢你的阅读-我很感激你提供的任何建议。
4条答案
按热度按时间cygmwpex1#
您可以尝试按以下方式使用kubernetes.utils提供的
create_from_yaml
。现在,您可以尝试运行下面的代码,并检查它是否适合您。
3qpi33ja2#
在
examples
目录中似乎有这样的例子,特别是https://github.com/kubernetes-client/python/blob/6709b753b4ad2e09aa472b6452bbad9f96e264e3/examples/create_deployment_from_yaml.py,它执行以下操作:jq6vz3qz3#
除了其他人推荐的方法外,您还可以使用Hikaru's
load_full_yaml
来完成此操作。光的优点是:
1.它是面向对象的,像Python一样,有
Pod.create()
这样的函数。1.它是根据OpenAPI规范自动生成的,因此不会遗漏任何内容
在构建我自己的开源Python Kubernetes platform时,我评估了至少五个不同的Kubernetes库,Hikaru是迄今为止最容易使用的库。
l5tcr1uw4#
注意Vedant的答案并不完全等同于“kubectl apply”命令,而是“kubectl create”命令,Github上有一个关于这个问题的讨论:https://github.com/kubernetes-client/python/issues/1168
似乎没有办法使用API来模拟“kubectl应用”。