Heim > Backend-Entwicklung > Golang > Erstellen Sie benutzerdefinierte Ressourcen mit dem go Kubernetes-Client

Erstellen Sie benutzerdefinierte Ressourcen mit dem go Kubernetes-Client

PHPz
Freigeben: 2024-02-08 21:24:34
nach vorne
661 Leute haben es durchsucht

使用 go Kubernetes 客户端创建自定义资源

Der PHP-Editor Xiaoxin bietet Ihnen eine Einführung in die Verwendung des Go-Kubernetes-Clients zum Erstellen benutzerdefinierter Ressourcen. Mit der Entwicklung der Cloud-nativen Technologie beginnen immer mehr Unternehmen, Kubernetes als Container-Orchestrierungsplattform einzuführen. Das Erstellen benutzerdefinierter Ressourcen (CRD) ist eine wichtige Funktion von Kubernetes, die Entwicklern dabei helfen kann, ihre Anwendungen und Dienste nahtlos in Kubernetes zu integrieren. In diesem Artikel wird ausführlich beschrieben, wie Sie mithilfe des go Kubernetes-Clients benutzerdefinierte Ressourcen erstellen, sodass Sie Ihre eigenen Anwendungen in Kubernetes flexibler verwalten und bereitstellen können.

Frageninhalt

Ich möchte den Go-Kubernetes-Client verwenden, um benutzerdefinierte Ressourcen basierend auf dem bereitgestellten CRD bereitzustellen. Basierend auf der Dokumentation des Kunden habe ich das Beispiel so geändert, dass es wie folgt aussieht:

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)
}
Nach dem Login kopieren

Wenn ich versuche, den Code auszuführen, erhalte ich keine Rückmeldung vom Logger. Fehler, aber Panik:

runtime error: invalid memory address or nil pointer dereference
goroutine 12
Nach dem Login kopieren

Alles läuft innerhalb der HTTP-Anfrageverarbeitung, aber da ich es mit anderen (nicht crd-basierten) Ressourcen verwendet habe, glaube ich nicht, dass das ein Problem darstellt. Beim Erweitern der Protokollierung habe ich festgestellt, dass alles einwandfrei funktioniert, bis die Ressource mit dieser Zeile erstellt wird

err := c.Create(context.Background(), u)
Nach dem Login kopieren

Lösung

Habe das Problem gefunden. Ich habe vergessen, den Client zu initialisieren

c, err := client.New(config.GetConfigOrDie(), client.Options{})
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonErstellen Sie benutzerdefinierte Ressourcen mit dem go Kubernetes-Client. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage