Maison  >  Article  >  développement back-end  >  Comment regarder les CustomResourceDefinitions (CRD) avec Client-Go ?

Comment regarder les CustomResourceDefinitions (CRD) avec Client-Go ?

DDD
DDDoriginal
2024-11-02 06:28:02408parcourir

How to Watch CustomResourceDefinitions (CRDs) with Client-Go?

Regardez les CustomResourceDefinitions (CRD) avec Client-Go

CustomResourceDefinitions (CRD) étendent l'API principale de Kubernetes pour permettre aux utilisateurs de créer et de gérer leurs propres types de ressources. Pour surveiller les modifications apportées aux CRD, vous pouvez utiliser client-go, une bibliothèque client Kubernetes.

Client-Go pour les ressources standard

Client-go fournit un mécanisme simple pour surveiller les changements dans les ressources standard telles que les services. L'exemple suivant montre comment surveiller les services nouveaux ou modifiés :

<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>

Extension de Client-Go pour les CRD

Client-go ne reconnaît pas nativement les CRD. Pour les prendre en charge, vous devez générer un client pour vos ressources personnalisées. Kubernetes fournit des outils de génération de code à cet effet.

Par exemple, pour créer un client pour le CRD ApiGateway défini dans l'extrait fourni, suivez les étapes décrites dans [cet article de blog](lien vers l'article de blog).

Génération de code

  1. Installez les outils de génération de code : allez installer k8s.io/code-generator/cmd/client-gen
  2. Générer le client : Exécutez la commande suivante en remplaçant your-group par le groupe de votre CRD :

    client-gen --input-base "" --input your-group/v1 --output-base ./pkg --output-package pkg/clientset/versioned --clientset-name versioned

Cela générera l'API et les structures client nécessaires dans le répertoire pkg.

Exemple de contrôleur

Référez-vous à [cet exemple de contrôleur](lien vers l'exemple de contrôleur) pour un exemple sur la façon de surveiller votre CRD à l'aide du client généré. Le package example_controller contient le code permettant de gérer les événements de surveillance.

Kubebuilder

Pour simplifier le processus de génération de configurations client et de contrôleurs pour les CRD, vous pouvez utiliser [kubebuilder]( lien vers kubebuilder). Cet outil automatise de nombreuses étapes décrites ci-dessus.

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!

Déclaration:
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