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 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의 압축을 풀고 올바른 오브젝트 유형으로 전환한 후 Object에 저장하는 변환 기능이 설치되어 있습니다. (TODO: 개체가 알 수 없는 유형인 경우 runtime.Unknown 개체가 생성되어 저장됩니다.)
- 유형
-
object