Kubernetes YAML ファイルを Go 構造体に逆シリアル化することは、Kubernetes API と対話するプログラムを開発する場合の一般的なタスクです。その方法は次のとおりです:
問題:
Kubernetes YAML ファイルを Go 構造体に逆シリアル化しようとすると、「種類がありません」というエラーが発生する場合がありますあなたの種類' はバージョン 'あなたのバージョン'" に登録されています。これは、Kubernetes スキーマが自動的に登録されないためです。
解決策:
この問題を解決するには、Kubernetes API グループとバージョンに適切なインストール パッケージをインポートします。と一緒に働いています。たとえば、アプリ v1beta1 の場合は次を使用します。
_ "k8s.io/client-go/pkg/apis/extensions/install"
v1 のサービスなどの他のリソースの場合は、pkg/api からインストール パッケージをインポートします。
_ "k8s.io/client-go/pkg/api/install"
サンプル コード:
デプロイメントを表す Kubernetes YAML ファイルを逆シリアル化する、完全に動作する Go プログラムの例を次に示します:
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 構造体に逆シリアル化するときに発生する「種類が登録されていません」エラーを解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。