Maison > Article > développement back-end > Créez des ressources personnalisées à l'aide du client go Kubernetes
L'éditeur PHP Xiaoxin vous présente une introduction à l'utilisation du client go Kubernetes pour créer des ressources personnalisées. Avec le développement de la technologie cloud native, de plus en plus d’entreprises commencent à adopter Kubernetes comme plateforme d’orchestration de conteneurs. La création de ressources personnalisées (CRD) est une fonctionnalité importante de Kubernetes, qui peut aider les développeurs à intégrer de manière transparente leurs applications et services dans Kubernetes. Cet article présentera en détail comment créer des ressources personnalisées grâce à l'utilisation du client go Kubernetes, vous permettant de gérer et de déployer de manière plus flexible vos propres applications dans Kubernetes.
Je souhaite utiliser le client Go Kubernetes pour déployer des ressources personnalisées basées sur le crd déployé. Sur la base de la documentation du client, j'ai modifié l'exemple pour ressembler à ceci :
u := &unstructured.unstructured{} u.object = map[string]interface{}{ "metadata": map[string]interface{}{ "name": task.name, }, "spec": map[string]interface{}{ "steps": []interface{}{ map[string]interface{}{ "image": "ubuntu", "name": "hello", "command": []interface{}{ "echo", }, "args": []interface{}{ "hello world!", }, }, }, }, } u.setgroupversionkind(schema.groupversionkind{ group: "tekton.dev", version: "v1beta1", kind: "task", }) err := c.create(context.background(), u) if err != nil { logger.error("error creating tektontask!", "err", err) } else { logger.info("created tektontask.", "task", u) }
Lorsque j'essaie d'exécuter le code, je ne reçois aucun retour de l'enregistreur. Erreur, mais panique :
runtime error: invalid memory address or nil pointer dereference goroutine 12
Tout fonctionne dans le cadre de la gestion des requêtes http, mais comme je l'ai utilisé avec d'autres ressources (non basées sur crd), je ne pense pas que ce soit un problème. Lors de l'extension de la journalisation, j'ai constaté que tout fonctionnait bien jusqu'à ce que la ressource soit créée à l'aide de cette ligne
err := c.Create(context.Background(), u)
J'ai trouvé le problème. J'ai oublié d'initialiser le client
c, err := client.New(config.GetConfigOrDie(), client.Options{})
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!