Deserialisieren einer Kubernetes-YAML-Datei in eine Go-Struktur ist eine häufige Aufgabe bei der Entwicklung von Programmen, die mit der Kubernetes-API interagieren. So geht's:
Problem:
Beim Versuch, eine Kubernetes-YAML-Datei in eine Go-Struktur zu deserialisieren, kann es zu einer Fehlermeldung mit der Meldung „no kind“ kommen 🎜>Ihre Art' ist für die Version 'Ihre Version'" registriert. Dies liegt daran, dass das Kubernetes-Schema nicht automatisch registriert wird.
Lösung:
Um dieses Problem zu beheben, importieren Sie das entsprechende Installationspaket für die Kubernetes-API-Gruppe und -Version, die Sie verwenden mit arbeiten. Verwenden Sie beispielsweise für Apps v1beta1:_ "k8s.io/client-go/pkg/apis/extensions/install"
_ "k8s.io/client-go/pkg/api/install"
Beispielcode :
Hier ist ein Beispiel für ein vollständig funktionierendes Go-Programm, das eine Kubernetes-YAML-Datei, die eine Bereitstellung darstellt, deserialisiert:package main
import (
"fmt"
"k8s.io/client-go/pkg/api"
_ "k8s.io/client-go/pkg/apis/extensions/install" // Important import
)
func main() {
decode := api.Codecs.UniversalDeserializer().Decode
deployment := `
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
`
obj, _, err := decode([]byte(deployment), nil, nil)
if err != nil {
fmt.Printf("%#v", err)
}
fmt.Printf("%#v\n", obj)
}
Das obige ist der detaillierte Inhalt vonWie behebe ich „No Kind Registered'-Fehler beim Deserialisieren von Kubernetes-YAML-Dateien in Go-Strukturen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!