结合Kubebuilder与code-generator开发Operator

结合Kubebuilder与code-generator开发Operator

一、概念简介

1.1 code-generator

k8s.io/client-go for talking to a kubernetes cluster.

k8s.io/client-go 提供了对k8s原生资源的informer和clientset等等,但对于自定义资源的操作则相对低效,需要使用 rest api 和 dynamic client 来操作,并自己实现反序列化等功能。

​ code-generator 提供了以下工具用于为k8s中的资源生成相关代码,可以更加方便的操作自定义资源:

  • deepcopy-gen: 生成深度拷贝对象方法
  • client-gen: 为资源生成标准的操作方法(get;list;watch;create;update;patch;delete)
  • informer-gen: 生成informer,提供事件机制(AddFunc,UpdateFunc,DeleteFunc)来响应kubernetes的event
  • lister-gen: 为get和list方法提供只读缓存层

​ code-generator整合了这些gen,使用脚本generate-groups.shgenerate-internal-groups.sh可以为自定义资源生产相关代码。

1.2 Kubebuilder

Kubebuilder是用于使用自定义资源定义(CRD)构建Kubernetes API的框架。

类似于Ruby on RailsSpringBoot之类的Web开发框架,Kubebuilder可以提高速度并降低开发人员管理的复杂性,以便在Go中快速构建和发布Kubernetes API。它建立在用于构建核心Kubernetes API的规范技术的基础之上,以提供减少样板和麻烦的简单抽象。

Resource + Controller = Operator,可以利用Kubebuilder编写自定义资源的Operator。

二、结合背景

Kubebuildercode-generator 都可以为CRD生成Kubernetes API相关代码,从代码生成层面来讲, 两者的区别在于:

  • Kubebuilder不会生成informers、listers、clientsets,而code-generator会。
  • Kubebuilder会生成Controller、Admission Webhooks,而code-generator不会。
  • Kubebuilder会生成manifests yaml,而code-generator不会。
  • Kubebuilder还带有一些其他便利性设施。

​ 使用Kubebuilder可以快捷生成CRD以及相关

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值