將Kubernetes YAML 檔案反序列化為Go 結構體是開發與Kubernetes API 互動的程式時的一項常見任務。操作方法如下:
問題:
當嘗試將Kubernetes YAML 檔案反序列化為Go 結構時,您可能會遇到錯誤,指出「no kind ' 您的種類'已註冊版本'您的版本'”。這是因為 Kubernetes schema 不會自動註冊。
解決方案:
要解決此問題,請匯入適合您的 Kubernetes API 群組和版本的安裝包與. 一起工作。例如,對於應用程式v1beta1,使用:
_ "k8s.io/client-go/pkg/apis/extensions/install"
對於其他資源,例如v1 中的服務,從pkg/api 匯入安裝包:
_ "k8s.io/client-go/pkg/api/install"
範例程式碼:
這是一個完整的工作Go 程式範例,它反序列化代表部署的Kubernetes YAML 檔案:
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)
}
透過匯入正確的安裝包,您可以成功反序列化Kubernetes將YAML 檔案轉換為Go 結構。
以上是將 Kubernetes YAML 檔案反序列化為 Go Struct 時如何解決「No Kind Registered」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!