Problem:
Deserialisieren Sie eine Kubernetes-YAML-Datei in eine Go-Struktur.
Fehler aufgetreten:
no kind "Deployment" is registered for version "apps/v1beta1"
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>
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>
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!