From 344c44454c88066ab48636054012727067a56de7 Mon Sep 17 00:00:00 2001 From: cyclinder Date: Tue, 5 Mar 2024 16:14:44 +0800 Subject: [PATCH] Spidercoordinator: Add kubeadm-config event to workQueue Signed-off-by: cyclinder --- .../coordinator_informer.go | 73 +++++++++++-------- 1 file changed, 41 insertions(+), 32 deletions(-) diff --git a/pkg/coordinatormanager/coordinator_informer.go b/pkg/coordinatormanager/coordinator_informer.go index 4dc15850d3..361564706b 100644 --- a/pkg/coordinatormanager/coordinator_informer.go +++ b/pkg/coordinatormanager/coordinator_informer.go @@ -231,9 +231,9 @@ func (cc *CoordinatorController) addEventHandlers( } _, err = configmapInformer.Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{ - AddFunc: cc.enqueueCoordinatorOnCiliumConfigAdd, - UpdateFunc: cc.enqueueCoordinatorOnCiliumConfigUpdated, - DeleteFunc: nil, + AddFunc: cc.enqueueCoordinatorOnConfigMapAdd, + UpdateFunc: cc.enqueueCoordinatorOnConfigMapUpdated, + DeleteFunc: cc.enqueueCoordinatorOnConfigMapDeleted, }) if err != nil { return err @@ -319,12 +319,7 @@ func (cc *CoordinatorController) enqueueCoordinatorOnUpdate(oldObj, newObj inter return } - coord, err := cc.CoordinatorLister.Get(cc.DefaultCoordinatorName) - if err != nil { - return - } - - coordCopy := coord.DeepCopy() + coordCopy := oldCoord.DeepCopy() if reflect.DeepEqual(coordCopy.Status, newCoord.Status) { logger.Info("status have no changes, ignore add it to workqueue") return @@ -334,39 +329,48 @@ func (cc *CoordinatorController) enqueueCoordinatorOnUpdate(oldObj, newObj inter logger.Debug(messageEnqueueCoordiantor) } -func (cc *CoordinatorController) enqueueCoordinatorOnCiliumConfigAdd(obj interface{}) { +func (cc *CoordinatorController) enqueueCoordinatorOnConfigMapAdd(obj interface{}) { cm := obj.(*corev1.ConfigMap) - if cm.Name != ciliumConfig { - return - } - - logger := InformerLogger.With( - zap.String("ConfigmapName", cm.Name), - zap.String("Operation", "Add"), - ) + if cm.Name == ciliumConfig || cm.Name == kubeadmConfigMap { + logger := InformerLogger.With( + zap.String("ConfigmapName", cm.Name), + zap.String("Operation", "Add"), + ) - cc.Workqueue.Add(fmt.Sprintf("ConfigMap/%v", cm.Name)) - logger.Debug(messageEnqueueCoordiantor) + cc.Workqueue.Add(fmt.Sprintf("ConfigMap/%v", cm.Name)) + logger.Debug(messageEnqueueCoordiantor) + } } -func (cc *CoordinatorController) enqueueCoordinatorOnCiliumConfigUpdated(oldObj, newObj interface{}) { +func (cc *CoordinatorController) enqueueCoordinatorOnConfigMapUpdated(oldObj, newObj interface{}) { oldCm := oldObj.(*corev1.ConfigMap) newCm := newObj.(*corev1.ConfigMap) - if newCm.Name != ciliumConfig { - return - } + if newCm.Name == ciliumConfig || newCm.Name == kubeadmConfigMap { + if cmp.Diff(oldCm.Data, newCm.Data) == "" { + return + } - if cmp.Diff(oldCm.Data, newCm.Data) == "" { - return + logger := InformerLogger.With( + zap.String("ConfigmapName", newCm.Name), + zap.String("Operation", "UPDATE"), + ) + + cc.Workqueue.Add(fmt.Sprintf("ConfigMap/%v", newCm.Name)) + logger.Debug(messageEnqueueCoordiantor) } +} - logger := InformerLogger.With( - zap.String("ConfigmapName", newCm.Name), - zap.String("Operation", "SYNC"), - ) +func (cc *CoordinatorController) enqueueCoordinatorOnConfigMapDeleted(obj interface{}) { + cm := obj.(*corev1.ConfigMap) + if cm.Name == ciliumConfig || cm.Name == kubeadmConfigMap { + logger := InformerLogger.With( + zap.String("ConfigmapName", cm.Name), + zap.String("Operation", "DEL"), + ) - cc.Workqueue.Add(fmt.Sprintf("ConfigMap/%v", newCm.Name)) - logger.Debug(messageEnqueueCoordiantor) + cc.Workqueue.Add(fmt.Sprintf("ConfigMap/%v", cm.Name)) + logger.Debug(messageEnqueueCoordiantor) + } } func (cc *CoordinatorController) run(ctx context.Context, workers int) error { @@ -633,6 +637,11 @@ func (cc *CoordinatorController) updateCiliumPodCIDR(k8sPodCIDR []string, coordi return fmt.Errorf("invalid ENV %s: %s, unable parse cilium-config configMap", "SPIDERPOOL_CILIUM_CONFIGMAP_NAMESPACE_NAME", cc.CiliumConfigMap) } + if cc.CiliumIPPoolLister == nil { + InformerLogger.Sugar().Errorf("CiliumIPPoolLister is unexpected to nil, Is the cilium multi-pool feature available?") + return fmt.Errorf("the cilium multi-pool feature is unavailable") + } + ccm, err := cc.ConfigmapLister.ConfigMaps(ns).Get(name) if err != nil { event.EventRecorder.Eventf(