kubebuilder 上手体验

§ 0x01 kubebuilder是什么?

kubebuilder以下简称kb,是k8s社区编写CRD的工具。它可以自动化生成CRD工程代码,提高编写operator的效率。官网的示例CronJob对于初学者来说太复杂了,我试了下,基本的代码可以运行起来。

§ 0x02 与sdk-operator的区别是什么?

应该是sdk-operator比较先出现,kubebuilder是后来者。极客时间上学习k8s时,张磊还没有提及kubebuilder。两者没有什么本质区别,不过看知乎中的说法,两者社区有融合的趋势。新手还是学习kubebuilder比较好。

https://www.zhihu.com/question/290497164

§ 0x03 安装

除了官网的kubebuilder,还有其他的工具controller-gen, kustomize需要安装,官网的文档里没有说安装方法。

3.1 kubebuilder

按照官网文档的命令,安装比较简单。https://book.kubebuilder.io/quick-start.html

安装完成,通过如下命令确认安装成功。

$ kubebuilder version                                                                                                                                                         <<<
Version: main.version{KubeBuilderVersion:"3.1.0", KubernetesVendor:"unknown", GitCommit:"92e0349ca7334a0a8e5e499da4fb077eb524e94a", BuildDate:"2021-05-29T05:57:53+01:00", GoOs:"darwin", GoArch:"amd64"}

一定要使用比较新的kubbuilder版本。

3.2 安装controller-gen

controller-gen是用来生成控制器代码的工具。
可以去github仓库中找到安装方法。go get + go install即可安装。mac下面可以直接使用brew install controller-gen安装。

3.3 安装kustomize

kustomize是用来生成CRD定义的工具。安装方法参考controller-gen。

基本的工具安装完成后,还需要一个k8s集群,1.16+的。并且本地配置好有kubectl。

§ 0x04 创建一个hello工程

4.1 初始化一个go的工程目录。

执行如下命令。

mkdir -pv hello
go mod init example.com/hello

4.2 初始化kubebuilder工程

执行如下命令。

kubebuilder init --domain example.com --license apache2 --owner "lin lin"

完成后,会生成Makefile和main.go等工程框架。

创建一个API。

kubebuilder create api --group me --version v1 --kind Case
$ kubebuilder create api --group me --version v1 --kind Case
Create Resource [y/n]
y
Create Controller [y/n]
y

有两个交互提示,都选y。
执行过程中有报错,提示一个go的依赖未找到,可以通过手动go get方式拉取。

至此工程已经初始化完成了。

4.2 安装

执行make install,即可自动把CRD安装到k8s集群中。通过kubectl get crd确认安装结果。

4.3 编写资源定义yaml,创建资源

创建如下的定义。符合定义的API GVK要素。在执行make run ENABLE_WEBHOOKS=false之后,
执行kubectl apply -f case.yaml,创建资源,可以在终端上看到operator的Reconcil循环中有监测到资源的变动。

apiVersion: me.example.com/v1
kind: Case
metadata:
  name: hello
spec:
  foo: "world"
2021-08-04T20:37:37.617+0800    INFO    controller-runtime.metrics      metrics server is starting to listen    {"addr": ":8080"}
2021-08-04T20:37:37.617+0800    INFO    setup   starting manager
2021-08-04T20:37:37.618+0800    INFO    controller-runtime.manager      starting metrics server {"path": "/metrics"}
2021-08-04T20:37:37.619+0800    INFO    controller-runtime.controller   Starting EventSource    {"controller": "case", "source": "kind source: /, Kind="}
2021-08-04T20:37:37.719+0800    INFO    controller-runtime.controller   Starting Controller     {"controller": "case"}
2021-08-04T20:37:37.719+0800    INFO    controller-runtime.controller   Starting workers        {"controller": "case", "worker count": 1}
2021-08-04T20:37:37.976+0800    DEBUG   controller-runtime.controller   Successfully Reconciled {"controller": "case", "request": "default/hello"}
2021-08-04T20:37:48.188+0800    DEBUG   controller-runtime.controller   Successfully Reconciled {"controller": "case", "request": "default/hello"}

至此整个示例完成了。由于没有编写任何代码,所以Reconcil中只能看到有事件,具体是添加还是删除,还是扩容都还不知道。这是下一步的工作。下一步就是扩展api/v1的CR的完整定义,并在Reconcil循环中进行真正的业务逻辑了。

§ 0x05 总结

  1. kubebuilder真的比较方便。生成的工程结构也清晰;
  2. 新手至少能跑通hello-world还是比较重要的,之前按照网上的自定义控制器流程,怎么着都跑不通,很受挫。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Flowable是一个用于实现工作流的技术框架。如果你对工作流这块没有接触过,可以通过查看Flowable的官方文档来了解。\[1\]官方文档可以帮助你了解Flowable的基本概念和使用方法。在文档中,你可以找到关于Flowable的介绍、配置、API文档以及示例代码等内容。 在实际项目中,我们通常需要将流程流转到指定的人或拥有指定权限的人那边进行处理。对于这个问题,你可以参考官方文档中关于Flowable的权限管理和任务分配的章节。\[2\]通过配置相关的权限和任务分配规则,你可以确保只有具备相应权限的人才能执行特定的命令。 此外,Flowable还提供了Flowable UI应用,可以通过绘制流程图的方式来设计工作流,并导出BPMN的xml结构。\[3\]这样可以避免手动编写繁琐的xml配置。你可以下载最新稳定版本的Apache Tomcat和Flowable 6,将Flowable的war文件复制到Tomcat的webapps文件夹下,并启动Tomcat服务器。然后,通过访问http://localhost:8080/flowable-modeler来使用Flowable UI应用。 总之,要上手Flowable,你可以先阅读官方文档,了解Flowable的基本概念和使用方法。然后,根据实际项目需求,配置权限和任务分配规则。最后,可以使用Flowable UI应用来设计和管理工作流程。 #### 引用[.reference_title] - *1* *2* *3* [Flowable使用初体验](https://blog.csdn.net/ITlikeyou/article/details/124041657)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v4^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值