kubernetes算子pythonic框架(kopf)
kopf的Python项目详细描述
kubernetes算子pythonic框架(kopf)
kopf-kubernetes operator pythonic framework-是一个框架和库 为了使Kubernetes操作符的开发更容易,只需几行Python代码
主要目标是将领域驱动的设计提升到基础架构级别, kubernetes是域对象(自定义资源)的编排器/数据库, 以及包含域逻辑的运算符(没有或最小的基础结构逻辑)。
文件
功能
- 一个功能齐全的操作符,只包含两个文件:
Dockerfile
+一个python模块。 - 从Python函数返回的隐式对象的状态更新
- 多个创建/更新/删除处理程序来跟踪对象处理过程
- 使用自动值差异更新选定字段的处理程序
- 使用相同的处理跟踪功能动态生成子处理程序。
- 在失败或异常情况下重试处理程序。
- 使用标签/命名传播轻松构建对象层次结构。
- 内置的events用于对象反映其状态(如
kubectl describe
中所示)。 - 自动记录/报告处理过程(如logs+events)
- 在一个进程中处理多个CRD。
- 开发实例暂时抑制已部署的实例
示例
见examples 对于典型用例的示例。
极简运算符可以如下所示:
importkopf@kopf.on.create('zalando.org','v1','kopfexamples')defcreate_fn(spec,meta,status,**kwargs):print(f"And here we are! Creating: {spec}")
处理程序可用的关键字参数:
body
处理对象的整个主体spec
作为body['spec']
的别名。meta
作为body['metadata']
的别名status
作为body['status']
的别名。patch
是在处理程序之后应用对象更改的dictretry
(int
)是此处理程序的重试序列号。started
(datetime.datetime
)是处理程序的开始时间,以防重试和出错runtime
(datetime.timedelay
)是处理程序运行的持续时间,以防重试和出错。diff
是对象更改的列表(仅用于更新事件)old
是对象或字段的旧状态(仅用于更新事件)。new
是对象或字段的新状态(仅用于更新事件)。logger
是每个对象的记录器,消息的前缀是对象的命名空间/名称。event
是从kubernetes api接收的原始事件。cause
是由框架(create/update/delete)检测到的处理程序的已处理原因。
^转发需要{**_
停止lint警告)
兼容性:框架将来可以添加新的关键字参数,
并且现有的处理程序应该接受它们。
用法
我们假设当在集群中执行运算符时,必须将其打包 用你喜欢的ci/cd工具进入docker镜像。
FROM python:3.7ADD . /src RUN pip install kopf CMD kopf run handlers.py
其中handlers.py
是带有处理程序的Python脚本
(示例请参见examples/*/example.py
)
有关附加处理程序的其他方式,请参见kopf run --help
。
贡献
请阅读CONTRIBUTING.md 有关我们向我们提交请求的过程的详细信息,请确保 你跟着CODE_OF_CONDUCT.md。
为当地发展创造环境, 阅读DEVELOPMENT.md
版本控制
我们使用SemVer进行版本控制对于可用的版本, 见releases on this repository
许可证
这个项目是由麻省理工学院授权的- 有关详细信息,请参见LICENSE文件。
致谢
- 感谢@side8和他们的k8s-operator 为了灵感