首頁 > 後端開發 > Golang > 在 Go 中反序列化 Kubernetes YAML 檔案時如何解決「no kind \'Deployment\' is Registered for version \'apps/v1beta1\'\」錯誤?

在 Go 中反序列化 Kubernetes YAML 檔案時如何解決「no kind \'Deployment\' is Registered for version \'apps/v1beta1\'\」錯誤?

DDD
發布: 2024-10-29 08:54:30
原創
1008 人瀏覽過

How to Resolve

將Kubernetes YAML 檔案反序列化為Go 結構

將Kubernetes YAML 檔案反序列化為Go 結構可讓您以程式設計方式使用Kubernetes 清單。但是,遇到諸如“沒有為版本“apps/v1beta1”註冊任何類型的“部署””之類的錯誤可能會令人沮喪。

要解決此問題,您需要匯入適當的架構包以確保反序列化器已存取特定 Kubernetes 物件的類型資訊。在這種情況下,對於使用「apps/v1beta1」版本的部署,您需要匯入「_ k8s.io/client-go/pkg/apis/extensions/install」。

<code class="go">import _ "k8s.io/client-go/pkg/apis/extensions/install"</code>
登入後複製

一旦架構導入後,反序列化器將能夠識別「部署」類型和版本,並正確反序列化 YAML 檔案。修正後的程式碼:

<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>
登入後複製

此解決方案也適用於其他資源類型。例如,如果服務遇到類似錯誤,您可以匯入「_ k8s.io/client-go/pkg/apis/core/install」。

匯入適當的架構包對於成功反序列化至關重要Kubernetes YAML 檔案。透過這樣做,您可以確保您有權存取將 YAML 清單轉換為 Go 結構所需的類型資訊。

以上是在 Go 中反序列化 Kubernetes YAML 檔案時如何解決「no kind \'Deployment\' is Registered for version \'apps/v1beta1\'\」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板