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

Le contrôleur coordonne les changements d’objet

WBOY
WBOYavant
2024-02-10 14:15:091117parcourir

Le contrôleur coordonne les changements d’objet

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"}),
            },
        },
    }),

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=

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")
        },
    })

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer