Maison > développement back-end > Golang > Le contrôleur coordonne les changements d'objet

Le contrôleur coordonne les changements d'objet

WBOY
Libérer: 2024-02-10 14:15:09
avant
1156 Les gens l'ont consulté

Le contrôleur coordonne les changements dobjet

L'éditeur php Yuzai vous présentera le contenu pertinent des modifications des objets de coordination du contrôleur dans cet article. Au cours du processus de développement, le contrôleur joue un rôle important, chargé de recevoir les demandes des utilisateurs et de planifier la logique métier correspondante. Cependant, nous pouvons parfois être amenés à modifier l'objet de coordination du contrôleur pour répondre à des besoins spécifiques. Cet article expliquera en détail comment modifier l'objet de coordination du contrôleur pour aider les développeurs à mieux comprendre et appliquer ce concept. Que vous soyez débutant ou développeur expérimenté, vous obtiendrez des connaissances et des conseils utiles grâce à cet article. Commençons!

Contenu de la question

J'essaie d'utiliser le SDK de l'opérateur pour écouter les modifications secrètes Le problème c'est que lorsque j'applique le secret en utilisant le label que j'ai défini dans l'opérateur, je ne reçois pas l'évènement de coordination

J'ai fait ce qui suit

mgr, err := ctrl.newmanager(ctrl.getconfigordie(), ctrl.options{
    scheme:                 scheme,
        …
    newcache: cache.builderwithoptions(cache.options{
        selectorsbyobject: cache.selectorsbyobject{
            &corev1.secret{}: {
                label: labels.selectorfromset(labels.set{"foo": "bar"}),
            },
        },
    }),
Copier après la connexion

Je dirige l'opérateur et applique le secret suivant, mais la coordination ne s'appelle pas, une idée ?

apiVersion: v1
kind: Secret
metadata:
  labels:
    foo: bar
  name: mysecret
  namespace: dev
type: Opaque
data:
  USER_NAME: YWRtaW4=
  PASSWORD: dGVzdBo=
Copier après la connexion

Workaround

On dirait que vous utilisez le champ cache.options.selectorsbyobject pour spécifier les balises qui doivent déclencher l'événement de coordination. Cependant, ce champ est utilisé pour spécifier la balise qui doit être utilisée pour sélectionner l'objet dans le cache, et non la balise qui doit déclencher l'événement de réconciliation.

Pour spécifier les balises qui doivent déclencher l'événement de coordination, vous pouvez utiliser la fonction ctrl.watch comme suit :

mgr.Watch(&source.Kind{Type: &corev1.Secret{}},
    &handler.EnqueueRequestForObject{},
    predicate.Funcs{
        UpdateFunc: func(e event.UpdateEvent) bool {
            return labels.Set(e.MetaNew.GetLabels()).Has("foo", "bar")
        },
    })
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