Heim > Backend-Entwicklung > Golang > So deserialisieren Sie Kubernetes-YAML-Dateien in Go-Strukturen: Warum erhalte ich die Fehlermeldung „Für Version „apps/v1beta1' ist keine Art „Bereitstellung' registriert'?

So deserialisieren Sie Kubernetes-YAML-Dateien in Go-Strukturen: Warum erhalte ich die Fehlermeldung „Für Version „apps/v1beta1' ist keine Art „Bereitstellung' registriert'?

DDD
Freigeben: 2024-10-31 16:20:37
Original
383 Leute haben es durchsucht

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

Deserialisieren von Kubernetes-YAML-Dateien in Go

Problem:

Deserialisieren Sie eine Kubernetes-YAML-Datei in eine Go-Struktur.

Fehler aufgetreten:

no kind "Deployment" is registered for version "apps/v1beta1"
Nach dem Login kopieren

Lösung:

Um den Fehler zu beheben, müssen Sie das erforderliche Kubernetes-Schemapaket importieren . Dies weist den Decoder an, welche Typen er bei der Deserialisierung der YAML berücksichtigen soll.

Importieren Sie das folgende Paket:

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

Grund:

Die Kubernetes Das Schema wird nicht automatisch beim Decoder registriert. Durch den Import des Installationspakets registrieren Sie explizit das Schema für die API-Gruppe „extensions/v1beta1“, die den Ressourcentyp „Bereitstellung“ enthält.

Vollständiges Arbeitsbeispiel:

<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>
Nach dem Login kopieren

Hinweis:

Im aktualisierten Beispiel wird die Bereitstellungsressource mithilfe der API-Gruppe „extensions/v1beta1“ definiert. Dies ist die richtige API-Gruppe für die Bereitstellungsressource in Kubernetes-Versionen vor 1.9. Für Kubernetes 1.9 und höher sollten Sie stattdessen die API-Gruppe apps/v1 verwenden.

Das obige ist der detaillierte Inhalt vonSo deserialisieren Sie Kubernetes-YAML-Dateien in Go-Strukturen: Warum erhalte ich die Fehlermeldung „Für Version „apps/v1beta1' ist keine Art „Bereitstellung' registriert'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage