Kubernetes YAML ファイルを Go 構造体に逆シリアル化する
Kubernetes YAML ファイルを Go 構造体に逆シリアル化すると、Kubernetes マニフェストをプログラムで操作できるようになります。ただし、「バージョン "apps/v1beta1" には種類の "Deployment" が登録されていません」のようなエラーが発生するとイライラすることがあります。
この問題に対処するには、適切なスキーマ パッケージをインポートして、デシリアライザーが特定の Kubernetes オブジェクトの型情報へのアクセス。この場合、「apps/v1beta1」バージョンのデプロイの場合、「_ k8s.io/client-go/pkg/apis/extensions/install」をインポートする必要があります。
<code class="go">import _ "k8s.io/client-go/pkg/apis/extensions/install"</code>
スキーマが完了したらがインポートされると、デシリアライザーは「デプロイメント」の種類とバージョンを認識し、YAML ファイルを適切にデシリアライズできるようになります。修正されたコード:
<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.UniversalDeserializer().Decode obj, _, err := decode([]byte(service), nil, nil) if err != nil { panic(err) } fmt.Printf("%#v\n", obj) }</code>
この解決策は他のリソース タイプにも適用されます。たとえば、サービスで同様のエラーが発生した場合は、「_ k8s.io/client-go/pkg/apis/core/install」をインポートします。
適切なスキーマ パッケージをインポートすることは、サービスの逆シリアル化を成功させるために重要です。 Kubernetes YAML ファイル。そうすることで、YAML マニフェストを Go 構造体に変換するために必要な型情報に確実にアクセスできるようになります。
以上がGo で Kubernetes YAML ファイルを逆シリアル化するときに発生する「種類の「デプロイメント」がバージョン「apps/v1beta1」に登録されていません」というエラーを解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。