如何通过代码验证带有Kubebuilder校验标记的Go结构体?
如何通过代码验证带有Kubebuilder校验标记的Go结构体?
当然可以实现啦!Kubebuilder本身会根据你添加的校验标记自动生成对应的验证代码,你只需要正确调用这些生成的方法就能完成校验,下面给你详细说明操作步骤:
第一步:确保已生成验证代码
当你在结构体字段上方添加好+kubebuilder:validation这类标记后,运行make generate和make manifests命令,Kubebuilder会自动在你的API目录下生成验证相关的Go代码(通常在api/[你的版本]/[资源名]_validation.go这类文件中),里面包含了针对ToySpec的校验逻辑,比如你设置的MinLength=1和MaxLength=15规则都会被转换成具体的代码检查。第二步:直接调用生成的验证函数
生成的代码里会有一个针对ToySpec的验证函数,一般命名为ValidateToySpec,你可以直接调用它来校验结构体实例:spec := ToySpec{Name: ""} err := ValidateToySpec(&spec) if err != nil { // 这里会返回Name长度为0的校验错误,你可以根据需求处理 println("校验失败:", err.Error()) }如果你定义的
ToySpec是某个自定义资源(比如ToyCR)的一部分,也可以调用针对整个CR的验证函数(比如ValidateToy),它会递归校验Spec里的所有字段。额外提示
要是你还没看到生成的验证代码,先检查下是否正确运行了make generate命令,或者确认你的校验标记写法没有错误——比如标记要写在结构体字段的注释上方,格式要符合Kubebuilder的要求。
备注:内容来源于stack exchange,提问作者Joe
相关产品推荐
相关产品推荐

