Deserialisieren von Kubernetes-YAML-Dateien in Go-Strukturen
Deserialisieren von Kubernetes-YAML-Dateien in Go-Strukturen ermöglicht Ihnen die programmgesteuerte Arbeit mit Kubernetes-Manifesten. Es kann jedoch frustrierend sein, auf Fehler wie „Keine Art „Bereitstellung“ ist für Version „apps/v1beta1“ registriert“ zu stoßen.
Um dieses Problem zu beheben, müssen Sie die entsprechenden Schemapakete importieren, um sicherzustellen, dass der Deserialisierer dies tut Zugriff auf die Typinformationen für das spezifische Kubernetes-Objekt. In diesem Fall müssen Sie für Bereitstellungen mit der Version „apps/v1beta1“ „_ k8s.io/client-go/pkg/apis/extensions/install“ importieren.
<code class="go">import _ "k8s.io/client-go/pkg/apis/extensions/install"</code>
Einmal das Schema Nach dem Import kann der Deserialisierer die Art und Version der „Bereitstellung“ erkennen und die YAML-Datei ordnungsgemäß deserialisieren. Der korrigierte Code:
<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>
Diese Lösung gilt auch für andere Ressourcentypen. Wenn beispielsweise bei Diensten ein ähnlicher Fehler auftritt, importieren Sie „_ k8s.io/client-go/pkg/apis/core/install“.
Der Import der entsprechenden Schemapakete ist für eine erfolgreiche Deserialisierung von entscheidend Kubernetes YAML-Dateien. Auf diese Weise können Sie sicherstellen, dass Sie Zugriff auf die Typinformationen haben, die zum Konvertieren der YAML-Manifeste in Go-Strukturen erforderlich sind.
Das obige ist der detaillierte Inhalt vonWie behebe ich den Fehler „Für Version „apps/v1beta1' ist keine Art „Bereitstellung' registriert' beim Deserialisieren von Kubernetes-YAML-Dateien in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!