Watch CustomResourceDefinitions (CRDs) mit Client-Go
CustomResourceDefinitions (CRDs) erweitern die Kern-API von Kubernetes, damit Benutzer ihre eigenen erstellen und verwalten können eigene Ressourcentypen. Um auf Änderungen an CRDs zu achten, können Sie client-go verwenden, eine Kubernetes-Clientbibliothek.
Client-Go für Standardressourcen
Client-go bietet einen unkomplizierten Mechanismus um auf Änderungen in Standardressourcen wie Diensten zu achten. Das folgende Beispiel zeigt, wie Sie auf neue oder geänderte Dienste achten können:
<code class="go">import ( "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes" "k8s.io/client-go/tools/clientcmd" ) func handleNewServices(clientset *kubernetes.Clientset) { for { serviceStreamWatcher, err := clientset.CoreV1().Services("").Watch(metav1.ListOptions{}) if err != nil { panic(err.Error()) } // Process events // ... } }</code>
Client-Go für CRDs erweitern
Client-go erkennt CRDs nicht nativ. Um sie zu unterstützen, müssen Sie einen Client für Ihre benutzerdefinierten Ressourcen generieren. Kubernetes stellt zu diesem Zweck Tools zur Codegenerierung bereit.
Um beispielsweise einen Client für das im bereitgestellten Snippet definierte ApiGateway CRD zu erstellen, befolgen Sie die in [diesem Blogbeitrag] (Link zum Blogbeitrag) beschriebenen Schritte.
Codegenerierung
Generieren Sie den Client: Führen Sie den folgenden Befehl aus und ersetzen Sie Ihre Gruppe durch die Gruppe Ihres CRD:
client-gen --input-base "" --input your-group/v1 --output-base ./pkg --output-package pkg/clientset/versioned --clientset-name versioned
Dadurch werden die erforderlichen API- und Client-Strukturen im pkg-Verzeichnis generiert.
Controller-Beispiel
Ein Beispiel finden Sie unter [diesem Beispiel-Controller] (Link zum Beispiel-Controller). wie Sie mithilfe des generierten Clients auf Ihr CRD achten können. Das Paket example_controller enthält den Code zur Verarbeitung von Überwachungsereignissen.
Kubebuilder
Um den Prozess der Generierung von Client-Konfigurationen und Controllern für CRDs zu vereinfachen, können Sie [kubebuilder]( Link zu kubebuilder). Dieses Tool automatisiert viele der oben beschriebenen Schritte.
Das obige ist der detaillierte Inhalt vonWie kann ich CustomResourceDefinitions (CRDs) mit Client-Go ansehen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!