將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中文網其他相關文章!