Maison >développement back-end >Golang >Comment désérialiser les fichiers YAML Kubernetes dans Go Structs : pourquoi est-ce que j'obtiens l'erreur « aucun type de déploiement » n'est enregistré pour la version « apps/v1beta1 » » ?

Comment désérialiser les fichiers YAML Kubernetes dans Go Structs : pourquoi est-ce que j'obtiens l'erreur « aucun type de déploiement » n'est enregistré pour la version « apps/v1beta1 » » ?

DDD
DDDoriginal
2024-10-31 16:20:37369parcourir

How to Deserialize Kubernetes YAML Files into Go Structs: Why Do I Get the Error

Désérialiser des fichiers YAML Kubernetes dans Go

Problème :

Désérialiser un fichier YAML Kubernetes dans une structure Go.

Erreur rencontrée :

no kind "Deployment" is registered for version "apps/v1beta1"

Solution :

Pour résoudre l'erreur, vous devez importer le package de schéma Kubernetes nécessaire . Cela indique au décodeur les types qu'il doit prendre en compte lors de la désérialisation du YAML.

Importez le package suivant :

<code class="go">_ "k8s.io/client-go/pkg/apis/extensions/install"</code>

Raison :

Le Kubernetes Le schéma n'est pas automatiquement enregistré auprès du décodeur. En important le package d'installation, vous enregistrez explicitement le schéma pour le groupe d'API extensions/v1beta1, qui inclut le type de ressource Déploiement.

Exemple de travail complet :

<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: 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
`

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>

Remarque :

Dans l'exemple mis à jour, la ressource de déploiement est définie à l'aide du groupe d'API extensions/v1beta1, qui est le groupe d'API correct pour la ressource de déploiement dans les versions de Kubernetes antérieures à 1.9. Pour Kubernetes 1.9 et versions ultérieures, vous devez plutôt utiliser le groupe API apps/v1.

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!

Déclaration:
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