Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara Menyahseri Fail YAML Kubernetes ke dalam Go Structs: Mengapa Saya Mendapat Ralat \"tiada jenis \'Deployment\' didaftarkan untuk versi \'apps/v1beta1\'\"?

Cara Menyahseri Fail YAML Kubernetes ke dalam Go Structs: Mengapa Saya Mendapat Ralat \"tiada jenis \'Deployment\' didaftarkan untuk versi \'apps/v1beta1\'\"?

DDD
DDDasal
2024-10-31 16:20:37274semak imbas

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

Menyahsiri Fail YAML Kubernetes dalam Go

Masalah:

Nyahsiri fail YAML Kubernetes ke dalam struct Go.

Ralat Ditemui:

no kind "Deployment" is registered for version "apps/v1beta1"

Penyelesaian:

Untuk menyelesaikan ralat, anda perlu mengimport pakej skema Kubernetes yang diperlukan . Ini mengarahkan penyahkod jenis yang perlu dipertimbangkan semasa menyahsiri YAML.

Import pakej berikut:

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

Sebab:

Kubernetes skema tidak didaftarkan secara automatik dengan penyahkod. Dengan mengimport pakej pemasangan, anda secara eksplisit mendaftarkan skema untuk sambungan/v1beta1 kumpulan API, yang termasuk jenis sumber Penggunaan.

Contoh Kerja Lengkap:

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

Nota:

Dalam contoh yang dikemas kini, sumber Deployment ditakrifkan menggunakan kumpulan API sambungan/v1beta1, iaitu kumpulan API yang betul untuk sumber Deployment dalam versi Kubernetes sebelum 1.9. Untuk Kubernetes 1.9 dan lebih baru, anda harus menggunakan kumpulan API aplikasi/v1.

Atas ialah kandungan terperinci Cara Menyahseri Fail YAML Kubernetes ke dalam Go Structs: Mengapa Saya Mendapat Ralat \"tiada jenis \'Deployment\' didaftarkan untuk versi \'apps/v1beta1\'\"?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn