1.130. io.k8s.apimachinery.pkg.runtime.RawExtension schema
- 描述
RawExtension 用于保留外部版本中的扩展。
要使用此功能,请创建一个字段,它在您的内部结构的外部、版本化的 struct 和 Object 中带有 RawExtension 的类型。您还需要注册各种插件类型。
type MyAPIObject struct { runtime.TypeMeta `json:",inline"` MyPlugin runtime.Object `json:"myPlugin"` }
type PluginA struct { AOption string `json:"aOption"` }
type MyAPIObject struct { runtime.TypeMeta `json:",inline"` MyPlugin runtime.RawExtension `json:"myPlugin"` }
type PluginA struct { AOption string `json:"aOption"` }
{ "kind":"MyAPIObject", "apiVersion":"v1", "myPlugin": { "kind":"PluginA", "aOption":"foo", }, }
那么会发生什么情况?解码使用 json 或 yaml,将序列化数据到外部 MyAPIObject 中。这会导致存储原始 JSON,但不会解包。下一步是将(使用 pkg/conversion)复制到内部结构中。运行时软件包的 DefaultScheme 已安装了转换功能,它将解包存储在 RawExtension 中的 JSON,将其转换为正确的对象类型,并将它存储在对象中。(TODO:在对象是未知类型的情况下,将创建并存储 runtime.Unknown 对象。)
- 类型
-
对象