Désérialiser un fichier YAML Kubernetes dans une structure Go est une tâche courante lors du développement de programmes qui interagissent avec l'API Kubernetes. Voici comment procéder :
Problème :
Lorsque vous essayez de désérialiser un fichier YAML Kubernetes dans une structure Go, vous pouvez rencontrer une erreur indiquant "aucun type 'votre type' est enregistré pour la version 'votre version'". En effet, le schéma Kubernetes n'est pas automatiquement enregistré.
Solution :
Pour résoudre ce problème, importez le package d'installation approprié pour le groupe d'API Kubernetes et la version que vous utilisez. travailler avec. Par exemple, pour les applications v1beta1, utilisez :
_ "k8s.io/client-go/pkg/apis/extensions/install"
Pour d'autres ressources, telles que les services de la v1, importez le package d'installation à partir de pkg/api :
_ "k8s.io/client-go/pkg/api/install"
Exemple de code :
Voici un exemple d'un programme Go fonctionnel complet qui désérialise un fichier YAML Kubernetes représentant un déploiement :
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)
}
En important les packages d'installation corrects, vous pouvez réussir à désérialiser Kubernetes Fichiers YAML dans les structures Go.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!