1.129. io.k8s.apimachinery.pkg.runtime.RawExtension schema
- 설명
RawExtension는 외부 버전의 확장을 유지하는 데 사용됩니다.
이를 사용하려면 내부 구조에서 External, versioned struct 및 Object의 유형으로 RawExtension가 있는 필드를 만듭니다. 또한 다양한 플러그인 유형을 등록해야 합니다.
type MyAPIObject struct { runtime.TypeMeta `json:",inline"` MyPlugin runtime.Object `json:"myPlugin"` }
type MyAPIObject struct { runtime.TypeMeta `json:",inline"` MyPlugin runtime.Object `json:"myPlugin"` }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow type PluginA struct { AOption string `json:"aOption"` }
type PluginA struct { AOption string `json:"aOption"` }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow type MyAPIObject struct { runtime.TypeMeta `json:",inline"` MyPlugin runtime.RawExtension `json:"myPlugin"` }
type MyAPIObject struct { runtime.TypeMeta `json:",inline"` MyPlugin runtime.RawExtension `json:"myPlugin"` }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow type PluginA struct { AOption string `json:"aOption"` }
type PluginA struct { AOption string `json:"aOption"` }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow 그러면 어떻게 될까요? 먼저 json 또는 yaml을 사용하여 직렬화된 데이터를 외부 MyAPIObject로 분리합니다. 이렇게 하면 원시 JSON이 저장되지만 압축 해제되지 않습니다. 다음 단계는 pkg/conversion을 사용하여 내부 구조를 복사하는 것입니다. 런타임 패키지의 DefaultScheme에는 RawExtension에 저장된 JSON의 압축을 풀고 올바른 오브젝트 유형으로 전환한 후 Object에 저장하는 변환 기능이 설치되어 있습니다. (TODO: 개체가 알 수 없는 유형인 경우 runtime.Unknown 개체가 생성되어 저장됩니다.)
- 유형
-
object