Joe*_*e J 5 python api client yaml kubernetes
Kubernetes 有一个非常好的官方 Python API 客户端。API 客户端假定您将创建单独的资源(例如 pod 或服务),并假定您将使用 Python 对象来组合和创建 API 请求。
但是,我想通过 Python 接口运行任意 kubernetes YAML 文件(包含一个或多个 k8s 资源)。我想知道是否可以利用 Python kubernetes 客户端来应用任意 YAML 文件?
我基本上是在寻找 Python 等价物:
kubectl apply -f some-file-containing-multiple-resources.yaml
Run Code Online (Sandbox Code Playgroud)
我正在寻找可以基本上加载 kubeconfig 并以相当 Pythonic 的方式通过 Python 应用 yaml 的东西。
我知道我可能可以用 Python 子进程调用来包装 kubectl 命令,但我希望有比这更 Pythonic 的东西,并希望核心 K8s Python 客户端可以做类似的事情。或者,如果有另一个 Python 包做类似的事情。
Python kubernetes 客户端可以调用任意的 k8s yaml 文件,如果不能,有什么可以吗?
感谢阅读 - 我感谢您提供的任何建议。
小智 9
您可以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
Run Code Online (Sandbox Code Playgroud)
现在您可以尝试运行以下代码并检查它是否适合您。
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)
Run Code Online (Sandbox Code Playgroud)
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()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7496 次 |
| 最近记录: |