python封装api_k8s python api二次封装 例子

import urllib3

from pprint import pprint

from kubernetes import client

from os import path

import yaml

class K8sApi(object):

def __init__(self):

# self.config = config.kube_config.load_kube_config()

urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

self.configuration = client.Configuration()

self.configuration.host = "https://192.168.100.111:6443"

self.configuration.api_key[

'authorization'] = 'Bearer token'

self.configuration.verify_ssl = False

self.k8s_apps_v1 = client.AppsV1Api(client.ApiClient(self.configuration))

self.Api_Instance = client.CoreV1Api(client.ApiClient(self.configuration))

self.Api_Instance_Extensions = client.ExtensionsV1beta1Api(client.ApiClient(self.configuration))

####################################################################################################################

def list_deployment(self, namespace="default"):

api_response = self.k8s_apps_v1.list_namespaced_deployment(namespace)

return api_response

def read_deployment(self, name="nginx-deployment", namespace="default"):

api_response = self.k8s_apps_v1.read_namespaced_deployment(name, namespace)

return api_response

def create_deployment(self, file="deploy-nginx.yaml"):

with open(path.join(path.dirname(__file__), file)) as f:

dep = yaml.safe_load(f)

resp = self.k8s_apps_v1.create_namespaced_deployment(

body=dep, namespace="default")

return resp

def replace_deployment(self, file="deploy-nginx.yaml", name="nginx-deployment", namespace="default"):

with open(path.join(path.dirname(__file__), file)) as f:

dep = yaml.safe_load(f)

resp = self.k8s_apps_v1.replace_namespaced_deployment(name, namespace,

body=dep)

return resp

def delete_deployment(self, name="nginx-deployment", namespace="default"):

api_response = self.k8s_apps_v1.delete_namespaced_deployment(name, namespace)

return api_response

####################################################################################################################

def list_namespace(self):

api_response = self.Api_Instance.list_namespace()

return api_response

def read_namespace(self, name="default"):

api_response = self.Api_Instance.read_namespace(name)

return api_response

def create_namespace(self, file="pod-nginx.yaml"):

with open(path.join(path.dirname(__file__), file)) as f:

dep = yaml.safe_load(f)

api_response = self.Api_Instance.create_namespace(body=dep)

return api_response

def replace_namespace(self, file="pod-nginx.yaml", name="default"):

with open(path.join(path.dirname(__file__), file)) as f:

dep = yaml.safe_load(f)

api_response = self.Api_Instance.replace_namespace(name, body=dep)

return api_response

def delete_namespace(self, name="default", namespace="default"):

api_response = self.Api_Instance.delete_namespace(name)

return api_response

####################################################################################################################

def list_node(self):

api_response = self.Api_Instance.list_node()

data = {}

for i in api_response.items:

data[i.metadata.name] = {"name": i.metadata.name,

"status": i.status.conditions[-1].type if i.status.conditions[

-1].status == "True" else "NotReady",

"ip": i.status.addresses[0].address,

"kubelet_version": i.status.node_info.kubelet_version,

"os_image": i.status.node_info.os_image,

}

return data

def list_pod(self):

api_response = self.Api_Instance.list_pod_for_all_namespaces()

data = {}

for i in api_response.items:

data[i.metadata.name] = {"ip": i.status.pod_ip, "namespace": i.metadata.namespace}

return data

def read_pod(self, name="nginx-pod", namespace="default"):

api_response = self.Api_Instance.read_namespaced_pod(name, namespace)

return api_response

def create_pod(self, file="pod-nginx.yaml", namespace="default"):

with open(path.join(path.dirname(__file__), file)) as f:

dep = yaml.safe_load(f)

api_response = self.Api_Instance.create_namespaced_pod(namespace, body=dep)

return api_response

def replace_pod(self, file="pod-nginx.yaml", name="nginx-pod", namespace="default"):

with open(path.join(path.dirname(__file__), file)) as f:

dep = yaml.safe_load(f)

api_response = self.Api_Instance.replace_namespaced_pod(name, namespace, body=dep)

return api_response

def delete_pod(self, name="nginx-pod", namespace="default"):

api_response = self.Api_Instance.delete_namespaced_pod(name, namespace)

return api_response

####################################################################################################################

def list_service(self):

api_response = self.Api_Instance.list_service_for_all_namespaces()

return api_response

def read_service(self, name="", namespace="default"):

api_response = self.Api_Instance.read_namespaced_service(name, namespace)

return api_response

def create_service(self, file="service-nginx.yaml", namespace="default"):

with open(path.join(path.dirname(__file__), file)) as f:

dep = yaml.safe_load(f)

api_response = self.Api_Instance.create_namespaced_service(namespace, body=dep)

return api_response

def replace_service(self, file="pod-nginx.yaml", name="hequan", namespace="default"):

with open(path.join(path.dirname(__file__), file)) as f:

dep = yaml.safe_load(f)

api_response = self.Api_Instance.replace_namespaced_service(name, namespace, body=dep)

return api_response

def delete_service(self, name="hequan", namespace="default"):

api_response = self.Api_Instance.delete_namespaced_service(name, namespace)

return api_response

####################################################################################################################

def list_ingress(self):

api_response = self.Api_Instance_Extensions.list_ingress_for_all_namespaces()

return api_response

def read_ingress(self, name="", namespace="default"):

api_response = self.Api_Instance_Extensions.read_namespaced_ingress(name, namespace)

return api_response

def create_ingress(self, file="ingress-nginx.yaml", namespace="default"):

with open(path.join(path.dirname(__file__), file)) as f:

dep = yaml.safe_load(f)

api_response = self.Api_Instance_Extensions.create_namespaced_ingress(namespace, body=dep)

return api_response

def replace_ingress(self, name="", file="ingress-nginx.yaml", namespace="default"):

with open(path.join(path.dirname(__file__), file)) as f:

dep = yaml.safe_load(f)

api_response = self.Api_Instance_Extensions.replace_namespaced_ingress(name=name, namespace=namespace,

body=dep)

return api_response

def delete_ingress(self, name="hequan", namespace="default"):

api_response = self.Api_Instance_Extensions.delete_namespaced_ingress(name, namespace)

return api_response

#####################################################################################################################

def list_stateful(self):

api_response = self.k8s_apps_v1.list_stateful_set_for_all_namespaces()

return api_response

def read_stateful(self, name="nginx-deployment", namespace="default"):

api_response = self.k8s_apps_v1.read_namespaced_stateful_set(name, namespace)

return api_response

def create_stateful(self, file="deploy-nginx.yaml"):

with open(path.join(path.dirname(__file__), file)) as f:

dep = yaml.safe_load(f)

resp = self.k8s_apps_v1.create_namespaced_stateful_set(

body=dep, namespace="default")

return resp

def replace_stateful(self, file="deploy-nginx.yaml", name="nginx-deployment", namespace="default"):

with open(path.join(path.dirname(__file__), file)) as f:

dep = yaml.safe_load(f)

resp = self.k8s_apps_v1.replace_namespaced_stateful_set(name, namespace,

body=dep)

return resp

def delete_stateful(self, name="nginx-deployment", namespace="default"):

api_response = self.k8s_apps_v1.delete_namespaced_stateful_set(name, namespace)

return api_response

####################################################################################################################

if __name__ == '__main__':

def test():

obj = K8sApi()

ret = obj.list_deployment()

pprint(ret)

test()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值