一、前言:如何操作自定义资源
client-go为每种K8S内置资源提供对应的clientset和informer。那么如果我们要监听和操作自定义资源对象,应该如何做呢?这里我们有两种方式:
方式一:使用client-go提供的dynamicClient来操作自定义资源对象,当然也可以使用RESTClient实现
方式二:使用code-generator来帮助我们生成我们需要的代码,这样我们就可以像使用client-go为内置K8S资源对象提供的方式监听和操作自定义资源
二、code-generator 生成器
代码 code-generator/cmd 目录下,包括如下:
client-gen
conversinon-gen
deepcopy-gen
go-go-protobuf
import-boss
informer-gen
lister-gen
openapi-gen
register-gen
set-gen
三. 创建自定义 CRD
其中 pkg/apis是固定的
apps是groupname,比如 apps.k8s.io/v1
v1 是 version
doc.go types.go register.go 都是自己写的,或者使用 operator-sdk 生成,在填充
四、常用code-generator标记
deep-copy标记
五、生成代码命令:
生成代码命令: generate-groups.sh all github.com/operator-crd/pkg/generated github.com/operator-crd/pkg/apis crd.example.com:v1