Kubernetes 有一个非常好的官方 Python API 客户端。 API 客户端假定您将创建单个资源(例如 pod 或服务),并假定您将使用 Python 对象来组合和创建 API 请求。
但是,我想通过 Python 接口(interface)运行任意 kubernetes YAML 文件(包含一个或多个 k8s 资源)。我想知道是否可以利用 Python kubernetes 客户端应用任意 YAML 文件?
我基本上在寻找 Python 等价物:
kubectl apply -f some-file-containing-multiple-resources.yaml
我正在寻找基本上可以加载 kubeconfig 并通过 Python 以相当 Pythonic 的方式应用 yaml 的东西。
我知道我可能可以用 Python 子进程调用来包装 kubectl 命令,但我希望有比这更 Pythonic 的东西,并希望核心 K8s Python 客户端可以做类似的事情。或者,如果有另一个 Python 包做类似的事情。
Python kubernetes客户端可以调用任意k8s yaml文件吗?如果不能,有什么可以吗?
感谢您的阅读——感谢您提供的任何建议。
最佳答案
您可以尝试使用create_from_yaml
由 kubernetes.utils 通过以下方式提供。
这是多资源定义文件
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
labels:
app: nginx
spec:
containers:
- name: ngnx-container
image: nginx:latest
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- port: 8080
targetPort: 80
现在您可以尝试运行以下代码并检查它是否适合您。
from kubernetes import client, config, utils
config.load_kube_config()
k8s_client = client.ApiClient()
yaml_file = '<location to your multi-resource file>'
utils.create_from_yaml(k8s_client, yaml_file)
关于python - Kubernetes Python API 客户端 : execute full yaml file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56673919/