Maison > développement back-end > Golang > Comment résoudre l'erreur « aucun type de déploiement » n'est enregistré pour la version « apps/v1beta1 » lors de la désérialisation des fichiers YAML Kubernetes dans Go ?

Comment résoudre l'erreur « aucun type de déploiement » n'est enregistré pour la version « apps/v1beta1 » lors de la désérialisation des fichiers YAML Kubernetes dans Go ?

DDD
Libérer: 2024-10-29 08:54:30
original
1011 Les gens l'ont consulté

How to Resolve

Désérialiser les fichiers YAML Kubernetes dans des structures Go

La désérialisation des fichiers YAML Kubernetes dans des structures Go vous permet de travailler avec les manifestes Kubernetes par programmation. Cependant, rencontrer des erreurs telles que « aucun type de « déploiement » n'est enregistré pour la version « apps/v1beta1 » » peut être frustrant.

Pour résoudre ce problème, vous devez importer les packages de schéma appropriés pour vous assurer que le désérialiseur a accès aux informations de type pour l'objet Kubernetes spécifique. Dans ce cas, pour les déploiements avec la version "apps/v1beta1", vous devez importer "_ k8s.io/client-go/pkg/apis/extensions/install".

<code class="go">import _ "k8s.io/client-go/pkg/apis/extensions/install"</code>
Copier après la connexion

Une fois le schéma est importé, le désérialiseur sera capable de reconnaître le type et la version du « Déploiement » et de désérialiser correctement le fichier YAML. Le code corrigé :

<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>
Copier après la connexion

Cette solution s'applique également aux autres types de ressources. Par exemple, si vous rencontrez une erreur similaire avec les services, vous importerez "_ k8s.io/client-go/pkg/apis/core/install".

L'importation des packages de schéma appropriés est cruciale pour une désérialisation réussie de Fichiers YAML Kubernetes. Ce faisant, vous pouvez vous assurer que vous avez accès aux informations de type nécessaires pour convertir les manifestes YAML en structures Go.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal