1 回答

TA貢獻1784條經驗 獲得超2個贊
我終于能夠讓它工作了!操作方法如下:
import (
"k8s.io/client-go/kubernetes/scheme"
"sigs.k8s.io/controller-runtime/pkg/client"
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
apiextensionsv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
)
func deserialize(data []byte) (*client.Object, error) {
apiextensionsv1.AddToScheme(scheme.Scheme)
apiextensionsv1beta1.AddToScheme(scheme.Scheme)
decoder := scheme.Codecs.UniversalDeserializer()
runtimeObject, groupVersionKind, err := decoder.Decode(data, nil, nil)
if err != nil {
return nil, err
}
return runtime
}
有幾件事看起來很關鍵(但我不確定我的理解在這里是100%正確的):
而聲明的返回類型是 ,該元組返回的第一項實際上是 a,并且可以毫無問題地強制轉換。
decoder.Decode
(runtime.Object, *scheme.GroupVersionKind, error)
client.Object
通過在添加組之前使用作為基線,我可以免費注冊所有“標準”資源。
scheme.Scheme
apiextensions.k8s.io
如果我使用 ,我會得到有關 的錯誤,并且返回的實例顯示版本。不知道為什么會發生這種情況,或者為什么當我使用時它沒有發生。
scheme.Codecs.UniversalDecoder()
no kind "CustomResourceDefinition" is registered for the internal version of group "apiextensions.k8s.io" in scheme "pkg/runtime/scheme.go:100"
groupVersionKind
__internal
UniversalDeserializer()
- 1 回答
- 0 關注
- 154 瀏覽
添加回答
舉報