kubernetes算子pythonic框架(kopf)

kopf的Python项目详细描述


kubernetes算子pythonic框架(kopf)

Build StatuscodecovCoverage Status

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是在处理程序之后应用对象更改的dict
  • retryint)是此处理程序的重试序列号。
  • starteddatetime.datetime)是处理程序的开始时间,以防重试和出错
  • runtimedatetime.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文件。

致谢

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
正则表达式使用Java从服务器截断文本   micronaut微服务的java内存消耗   如果私有函数需要相同的输入,java应该在公共函数中显式执行异常检查   为什么我们在java中使用抽象类和抽象方法   Java中接受外来字母的字符串?   cordova Android:ClassNotFoundException,包括ZXing   通过LiveData observer向特定索引添加项时出现java IndexOutOfBoundsException   jsp Java从两个源调用一个servlet   java如何设置网格布局中按钮的位置?   java HashMap返回方法   java JDK错误版本   java如何将现有类集成到新的Swing项目中   java如何在扫描程序位于输入端时使for循环停止   java正则表达式匹配空白表   java组织。格拉德尔。工具。BuildException:设置的代码长度无效   JList中的swing Java格式化字符串   javabeans如何将JavaBean属性映射到另一个名称以进行输出?   ajax请求后的java Rerender RichFaces错误消息