Kubernetes YAML ファイルを Go 構造体に逆シリアル化するときに発生する「種類が登録されていません」エラーを解決する方法

Patricia Arquette
リリース: 2024-10-29 16:26:02
オリジナル
794 人が閲覧しました

How to Resolve

Kubernetes YAML ファイルを Go 構造体に逆シリアル化する

Kubernetes YAML ファイルを Go 構造体に逆シリアル化することは、Kubernetes API と対話するプログラムを開発する場合の一般的なタスクです。その方法は次のとおりです:

問題:

Kubernetes YAML ファイルを Go 構造体に逆シリアル化しようとすると、「種類がありません」というエラーが発生する場合がありますあなたの種類' はバージョン 'あなたのバージョン'" に登録されています。これは、Kubernetes スキーマが自動的に登録されないためです。

解決策:

この問題を解決するには、Kubernetes API グループとバージョンに適切なインストール パッケージをインポートします。と一緒に働いています。たとえば、アプリ v1beta1 の場合は次を使用します。

_ "k8s.io/client-go/pkg/apis/extensions/install"
ログイン後にコピー

v1 のサービスなどの他のリソースの場合は、pkg/api からインストール パッケージをインポートします。

_ "k8s.io/client-go/pkg/api/install"
ログイン後にコピー

サンプル コード:

デプロイメントを表す Kubernetes YAML ファイルを逆シリアル化する、完全に動作する Go プログラムの例を次に示します:

package main

import (
    "fmt"

    "k8s.io/client-go/pkg/api"
    _ "k8s.io/client-go/pkg/apis/extensions/install" // Important import
)

func main() {
    decode := api.Codecs.UniversalDeserializer().Decode

    deployment := `
    apiVersion: extensions/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
    `

    obj, _, err := decode([]byte(deployment), nil, nil)
    if err != nil {
        fmt.Printf("%#v", err)
    }

    fmt.Printf("%#v\n", obj)
}
ログイン後にコピー

正しいインストール パッケージをインポートすると、Kubernetes を正常に逆シリアル化できます。 YAML ファイルを Go 構造体に組み込みます。

以上がKubernetes YAML ファイルを Go 構造体に逆シリアル化するときに発生する「種類が登録されていません」エラーを解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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