ホームページ > バックエンド開発 > Golang > Go で Kubernetes YAML ファイルを逆シリアル化するときに発生する「種類の「デプロイメント」がバージョン「apps/v1beta1」に登録されていません」というエラーを解決する方法

Go で Kubernetes YAML ファイルを逆シリアル化するときに発生する「種類の「デプロイメント」がバージョン「apps/v1beta1」に登録されていません」というエラーを解決する方法

DDD
リリース: 2024-10-29 08:54:30
オリジナル
992 人が閲覧しました

How to Resolve

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート