Install Kubernetes Python Client and PyYaml:
# pip install kubernetes pyyaml
1. Get Namespaces or Pods by CoreV1Api:
# -*- coding: utf-8 -*- from kubernetes import client, config, utils config.kube_config.load_kube_config(config_file="../kubecfg.yaml") coreV1Api = client.CoreV1Api() print("\nListing all namespaces") for ns in coreV1Api.list_namespace().items: print(ns.metadata.name) print("\nListing pods with their IP, namespace, names:") for pod in coreV1Api.list_pod_for_all_namespaces(watch=False).items: print("%s\t\t%s\t%s" % (pod.status.pod_ip, pod.metadata.namespace, pod.metadata.name))
2. Create Deployment and Service by AppsV1Api:
# -*- coding: utf-8 -*- from kubernetes import client, config, utils import yaml config.kube_config.load_kube_config(config_file="../kubecfg.yaml") yamlDeploy = open( r'deploy.yaml') jsonDeploy = yaml.load(yamlDeploy, Loader = yaml.FullLoader) yamlService = open(r'service.yaml') jsonService = yaml.load(yamlService, Loader = yaml.FullLoader) appsV1Api = client.AppsV1Api() if jsonDeploy['kind'] == 'Deployment': appsV1Api.create_namespaced_deployment( namespace="default", body = jsonDeploy ) if jsonService['kind'] == 'Service': coreV1Api.create_namespaced_service( namespace="default", body=jsonService )
3. Create ANY type of objects from a yaml file by utils.create_from_yaml, you can put multiple resources in one yaml file:
# -*- coding: utf-8 -*- from kubernetes import client, config, utils config.kube_config.load_kube_config(config_file="../kubecfg.yaml") k8sClient = client.ApiClient() utils.create_from_yaml(k8sClient, "deploy-service.yaml")
Reference:
https://github.com/kubernetes-client/python/blob/6709b753b4ad2e09aa472b6452bbad9f96e264e3/examples/create_deployment_from_yaml.py
https://stackoverflow.com/questions/56673919/kubernetes-python-api-client-execute-full-yaml-file