如何将runtime.Object转换为特定类型?

Dag*_*ang 4 kubernetes

我正在使用 Kubebuilder 框架编写一个自定义控制器,在一种方法中,我得到了一个类型的对象runtime.Object,我知道我应该能够将其转换为特定类型MyCustomResource,但我无法从文档中弄清楚如何转换。

ers*_*les 7

它应该像这样简单:

func convertToMyCustomResource(obj runtime.Object) *v1alpha1.MyCustomResource {
  myobj := obj.(*v1alpha1.MyCustomResource)
  return myobj
}
Run Code Online (Sandbox Code Playgroud)

如果这产生错误(例如不可能的类型断言),请确保MyCustomResource满足runtime.Object接口;IE

  1. 运行controller-gen工具生成DeepCopyObject方法

    go run vendor/sigs.k8s.io/controller-tools/cmd/controller-gen/main.go paths=./api/... object
    
    Run Code Online (Sandbox Code Playgroud)
  2. "k8s.io/apimachinery/pkg/apis/meta/v1".TypeMeta字段添加到MyCustomResource实现该GetObjectKind方法的结构中。

go run vendor/sigs.k8s.io/controller-tools/cmd/controller-gen/main.go paths=./api/... object
Run Code Online (Sandbox Code Playgroud)