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
Libérer: 2024-10-31 16:20:37
original
435 Les gens l'ont consulté

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

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

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

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