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

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

DDD
Libérer: 2024-11-02 06:28:02
original
511 Les gens l'ont consulté

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

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

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!

source:php.cn
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