一、安装kubebuilder
curl -L -o kubebuilder https://go.kubebuilder.io/dl/latest/$(go env GOOS)/$(go env GOARCH) chmod +x kubebuilder && mv kubebuilder /usr/local/bin/
二、kubebuilder的使用
1、init
kubebuilder init --plugins go/v3 --domain example.org --owner "Your name"
关键参数说明:
--plugins,指定生成代码的插件,默认使用"go.kubebuilder.io/v3"
--project-version 支持的项目版本,有2,3默认3
--repo module path,就是go mod init 指定的go module的名称
--domain,组织名称,用于API Group等
--owner,operator所有者,一般填写开发者邮箱
2、create
kubebuilder create api --group traefik --version v1 --kind TraefikService
3、项目文件解读
-- api/v1 目录下主要存放我们的API Object,就是我们的Resource对象相关信息
-- config/crd 目录下是我们crd的描述文件,我们需要把自定义资源(CRD)的描述信息注册给k8s时需要的
-- rbad 目录下存放着关于CRD资源的role定义的样例文件(editor/viewer)
-- samples 目录下存放着CRD的一个样例文件,后面部署完成后可以直接编辑下apply到K8S集群中去
-- controllers 目录下存放着我们所有的Object的Controller代码