1.130. io.k8s.apimachinery.pkg.runtime.RawExtension スキーマ
- 説明
RawExtension は、外部バージョンでエクステンションを保持するために使用されます。
これを使用するには、外部のバージョン管理された構造で type が RawExtension で、内部構造に Object を持つフィールドを作成します。また、さまざまなプラグインタイプを登録する必要もあります。
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 にアンマーシャリングします。これにより、raw JSON が保存されますが、デプロイメントされません。次のステップは、(pkg/conversion を使用して) 内部構造体にコピーします。ランタイムパッケージの DefaultScheme には、RawExtension に格納されている JSON をデプロイメントし、正しいオブジェクトタイプに変換して、Object に格納する変換関数がインストールされています。(TODO: オブジェクトのタイプが不明な場合、runtime.Unknown オブジェクトが作成され、保存されます。)
- タイプ
-
object