我正在用Kubebuilder框架编写自定义控制器,在一种方法中,我得到了runtime.Object
类型的对象,我知道我应该能够将其转换为特定的类型,例如MyCustomResource
,但我无法从文档中找出答案。
答案 0 :(得分:1)
它应该像这样简单:
func convertToMyCustomResource(obj runtime.Object) *v1alpha1.MyCustomResource {
myobj := obj.(*v1alpha1.MyCustomResource)
return myobj
}
如果这会产生错误(例如,不可能的类型声明),请确保MyCustomResource
满足runtime.Object
接口;即
运行控制器生成工具以生成DeepCopyObject
方法
go run vendor/sigs.k8s.io/controller-tools/cmd/controller-gen/main.go paths=./api/... object
将"k8s.io/apimachinery/pkg/apis/meta/v1".TypeMeta
字段添加到实现MyCustomResource
方法的GetObjectKind
结构中。
import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
type MyCustomResource struct {
metav1.TypeMeta `json:",inline"`
// ... other stuff
}