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