kubebuilder 是一个用于快速构建 Kubernetes Operator 的开发工具。而 controller-gen 则是 kubebuilder 中的一个子命令,用于生成和更新 Kubernetes 控制器中的代码。
下面是 controller-gen 的一些常用用法:
生成 CRD(自定义资源定义):
controller-gen crd paths=./api/v1alpha1 output:crd:artifacts:config=config/crd/bases
生成 deepcopy 方法:
controller-gen object paths=./api/v1alpha1 types=MyResource
生成默认的控制器代码框架:
controller-gen webhook paths=./api/v1alpha1,./controllers output:webhook:artifacts:config=config/webhook
生成 webhook 注册代码:
controller-gen rbac:roleName=my-operator-role webhook paths="./..." output:webhook:artifacts:config=config/webhook
自动生成 Defaulting、Validating Webhooks 和 Conversion Webhooks:
# 默认值转换和验证 webhook (默认值只能设置到 spec)
controller-gen crd \
crdVersions=v1 \
webhook \
paths="./pkg/apis/example.com/v1beta1" \
output:create=true,paths="./pkg/apis/example.com/v1beta1/zz_generated.deepcopy.go"
# 转换 webhook (转换规则可以设置到任何字段)
controller-gen crd \
crdVersions=v1 \
conversion \
paths="./pkg/apis/example.com/v1beta2" \
output:create=true,paths="./pkg/apis/example.com/v1beta2/zz_generated.deepcopy.go"
这只是 controller-gen 的一些常见用法,更多详细的用法和选项可以参考 kubebuilder 官方文档或者运行 controller-gen --help
命令查看帮助信息。
内容由零声教学AI助手提供,问题来源于学员提问