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

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