kubebuilder vs operator-sdk

Posted by [Kohn] on Monday, May 15, 2023 本文阅读量

一开始接触operator时用的是operator-sdk, 后来看别人的代码发现经常看到 kubebuilder, 包括后面又接触到了controller-runtime/client-go的代码都有 informer, 一直对这几个之间的关系有些模糊, 今天搜索资料整理了一下:

kuberbuilder和operator-sdk从构建operator层面上来说功能一致, 就是附加的工具和生态有些不同. 他们底层都使用的是controller-runtime提供的用于构建 controller的代码, 包括manager/informer/Reconcile机制等.

controller-runtime底层使用client-go访问k8s, 以及informer的底层也是基于client-go提供的informer, 在此之上封装了一下.

自己写业务代码时, 可能使用controller-runtime提供的cache来使用通用的 informer, 只要提供scheme即可. 也可以通过k8s提供的code-generator生成 clientset来访问apiserver, clientset就是client-go简单封装.