python-operator 介绍以及使用文档
operator简介:
Operator用于扩展Kubernetes API,特定的应用进程控制器,它用来创建、配置和管理复杂的有状态应用,如数据库、缓存和监控系统。Operator基于 Kubernetes 的资源和控制器概念之上构建,但同时又包含了应用进程特定的领域知识。创建Operator 的关键是CRD(自定义资源)的设计。Kubernetes 1.7 版本以来就引入了自定义控制器的概念,该功能可以让开发人员扩展添加新功能,更新现有的功能,并且可以自动执行一些管理任务,这些自定义的控制器就像 Kubernetes 原生的组件一样。
开发operator的两个必要条件
1.自研控制器(也就是这个项目中的python-operator程序,使用kopf模块开发)
2.crd 以及rbac权限文件(由运维人员提供李雷or张安宁,开发operator控制器人员不需要管理)
kopf开发过程以及模块使用文档
1.安装python3环境,安装pip3工具,搭建本地python环境
参考python官网https://www.python.org/
建议使用python 3.7.x版本
2.安装kopf kubernetes 等模块
sudo pip3 install kopf
sudo pip3 install kubernetes
3.kopf模块中装饰器的使用
1.创建编排的装饰器
@kopf.on.create("demo.crd.autohome.com","v1","TestDemo")
def create_fn(body,spec,**kwargs):
@kopf.on.create 装饰器为固定写法,demo.crd.autohome.com 为扩展api的路径,v1是版本号,TestDemo为自定义的CRD名字
def create_fn 为这个装饰器下的方法,固定名字body spec **kwargs 为可以使用的参数,除此之外还有name namespace 等,从body kwargs 可以获取整个crd yaml参数,spec获取spec一下内容
2.删除编排的装饰器
@kopf.on.delete("demo.crd.autohome.com","v1","TestDemo")
def delete(body, **kwargs):
@kopf.on.delete 删除装饰器,以及装饰器下面的固定方法名def delete(body, **kwargs):
3.监听装饰器
@kopf.timer("demo.crd.autohome.com", "v1", "TestDemo", interval=5, initial_delay=10 )
def monitor_key(body,spec, **kwargs):
@kopf.timer 为监听装饰器固定写法,固定方法def monitor_key,interval 为间隔多长时间执行一次监听方法,initial_delay为服务启动后延迟多少,开始执行监听方法
4.更新编排装饰器
@kopf.on.update("demo.crd.autohome.com","v1","TestDemo")
def update_fn(body, **kwargs):
@kopf.on.update 为监听装饰器固定写法,固定方法def update_fn
5.更多的kopf使用方式可以参看官网https://kopf.readthedocs.io/en/stable/
4.kubernetes模块介绍以及使用
kubernetes模块是谷歌官方提供的python版本的sdk,方便使用python来调用k8s api接口,集成了所有k8s编排的创建,更新,删除工作,有一定的学习成本,同时对k8s需要有一定的了解,以下是部分代码的说明
api_core = kubernetes.client.CoreV1Api() 获取CoreV1Api对象,可以操作CoreV1Api编排下(例如service)的各种方法
api_apps = kubernetes.client.AppsV1Api() 获取CoreV1Api对象,可以操作CoreV1Api编排下(例如deployment statefulset)的各种方法
kubernetes模块下的各种对象以及方法参照谷歌官方https://github.com/kubernetes-client/python