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 对象。)

类型
对象
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.