From bc8e38a50bc5af490ee4d111b080fdcc4e368f9b Mon Sep 17 00:00:00 2001 From: Slavik Panasovets Date: Tue, 28 Jun 2022 11:10:32 +0000 Subject: [PATCH] Delete RBS annotations as a last step on garbage collection Deleting annotations updates service configuration and other controllers see this update. We should delete annotation last, so other controllers see updated service with all other fields (especially finalizer) removed --- pkg/l4lb/l4netlbcontroller.go | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/pkg/l4lb/l4netlbcontroller.go b/pkg/l4lb/l4netlbcontroller.go index d0a5f7aaba..f2becb11de 100644 --- a/pkg/l4lb/l4netlbcontroller.go +++ b/pkg/l4lb/l4netlbcontroller.go @@ -499,14 +499,6 @@ func (lc *L4NetLBController) garbageCollectRBSNetLB(key string, svc *v1.Service) return result } - // Remove LB annotations from the Service when processing the finalizer. - if err := deleteL4RBSAnnotations(lc.ctx, svc); err != nil { - lc.ctx.Recorder(svc.Namespace).Eventf(svc, v1.EventTypeWarning, "DeleteLoadBalancer", - "Error removing resource annotations: %v: %v", err) - result.Error = fmt.Errorf("Failed to reset resource annotations, err: %w", err) - return result - } - if err := common.EnsureDeleteServiceFinalizer(svc, common.NetLBFinalizerV2, lc.ctx.KubeClient); err != nil { lc.ctx.Recorder(svc.Namespace).Eventf(svc, v1.EventTypeWarning, "DeleteLoadBalancerFailed", "Error removing finalizer from L4 External LoadBalancer, err: %v", err) @@ -523,6 +515,14 @@ func (lc *L4NetLBController) garbageCollectRBSNetLB(key string, svc *v1.Service) return result } + // IMPORTANT: Remove LB annotations from the Service LAST, cause changing service fields are emitted as service update to other controllers + if err := deleteL4RBSAnnotations(lc.ctx, svc); err != nil { + lc.ctx.Recorder(svc.Namespace).Eventf(svc, v1.EventTypeWarning, "DeleteLoadBalancer", + "Error removing resource annotations: %v: %v", err) + result.Error = fmt.Errorf("Failed to reset resource annotations, err: %w", err) + return result + } + lc.ctx.Recorder(svc.Namespace).Eventf(svc, v1.EventTypeNormal, "DeletedLoadBalancer", "Deleted L4 External LoadBalancer") return result }