背景
一直觉得这种脚手架的东西虽然方便,但是不好掌握它,调教它,归根结底还是不够了解,因此打算从最基础开始了解kubebuilder。
解决什么事?
首先你想使用一个东西前你肯定要知道这东西帮你解决什么事。那现在就是有这么一个需求。说开发同学不太懂k8s,最好的办法就是开发扔给k8s一个yaml,直接就来一个全套,什么pod、ingress、pvc全给你一条龙弄好,应用直接就跑了起来。相当于有一个中间人他读懂了开发扔过来的yaml并根据yaml的要求去工作。
需要什么?
想要完成这件事,首先我要一个中间人。这个中间人叫什么,能干什么得让k8s知道,比如这个中间人叫“舔狗”poor dog,你给他清单他就能帮你完成事情,当你在清单上写 image字段他就知道去镜像仓库拉镜像,pod size字段他就知道帮你启动3个pod,port字段他就知道帮你完成ingress,多么的舔狗。。。这只舔狗就是crd。那这只舔狗得跟k8s去通信吧,他怎么知道清单上写的是什么,怎么知道清单的变化,现在实际pod的数量,他需要一个电话,时时刻刻和k8s的api server保持联系,这个东西就叫client go。
关键词
好吧,大概有点感觉了吧,那我们就从下面几个关键词一步一步了解吧,当然我也是一点一点在写,下一篇文章写我们的电话 client-go,舔狗可以用电话跟k8s通信,我们也可以用电话跟k8s通信。
client-go
k8s/apimachinery
k8s/code-generator
crd
kubebuilder