次を使用して Kubernetes YAML ファイルを Go 構造体に逆シリアル化しようとしたときにエラーが発生しました。 api.Codecs.UniversalDecoder().Decode 関数。エラーには、「種類の "Deployment" がバージョン "apps/v1beta1" に登録されていません。
Kubernetes YAML ファイルを逆シリアル化するとき、この場合、Deployment オブジェクトは API の apps/v1beta1 バージョンに登録されています。
この問題を解決するには、を登録するパッケージをインポートする必要があります。これは、コードに次の行を追加することで実現できます:
<code class="go">_ "k8s.io/client-go/pkg/apis/extensions/install"</code>
このインポートにより、Deployment オブジェクトのスキーマが登録され、逆シリアル化プロセス中に使用できるようになります。 .
これは、必要なインポートを組み込んだ、変更された動作する Go プログラムです。
<code class="go">package main import ( "fmt" "k8s.io/client-go/pkg/api" "k8s.io/client-go/pkg/api/install" "k8s.io/client-go/pkg/apis/extensions/install" ) var service = ` apiVersion: apps/v1beta1 kind: Deployment metadata: name: my-nginx spec: replicas: 2 template: metadata: labels: run: my-nginx spec: containers: - name: my-nginx image: nginx ports: - containerPort: 80 ` func main() { decode := api.Codecs.UniversalDecoder().Decode obj, _, err := decode([]byte(service), nil, nil) if err != nil { fmt.Printf("%#v", err) } fmt.Printf("%#v\n", obj) }</code>
このプログラムを実行すると、Deployment オブジェクトは問題なく正常に逆シリアル化されるはずです。前述のエラーが発生しました。
以上がKubernetes YAML を逆シリアル化するときに発生する「種類の「デプロイメント」がバージョン「apps/v1beta1」に登録されていません」というエラーを修正する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。