Maison > développement back-end > Golang > Créez des ressources personnalisées à l'aide du client go Kubernetes

Créez des ressources personnalisées à l'aide du client go Kubernetes

PHPz
Libérer: 2024-02-08 21:24:34
avant
653 Les gens l'ont consulté

使用 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.

Contenu de la question

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)
}
Copier après la connexion

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
Copier après la connexion

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)
Copier après la connexion

Solution

J'ai trouvé le problème. J'ai oublié d'initialiser le client

c, err := client.New(config.GetConfigOrDie(), client.Options{})
Copier après la connexion

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!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal