diff --git a/go-controller/pkg/ovn/controller/apbroute/master_controller.go b/go-controller/pkg/ovn/controller/apbroute/master_controller.go index 0a07cc2c757..918015aff15 100644 --- a/go-controller/pkg/ovn/controller/apbroute/master_controller.go +++ b/go-controller/pkg/ovn/controller/apbroute/master_controller.go @@ -197,9 +197,6 @@ func (c *ExternalGatewayMasterController) Run(threadiness int) { } syncWg.Wait() - klog.V(4).InfoS("Repairing Admin Policy Based External Route Services") - c.repair() - wg := &sync.WaitGroup{} for i := 0; i < threadiness; i++ { for _, workerFn := range []func(*sync.WaitGroup){ diff --git a/go-controller/pkg/ovn/controller/apbroute/repair.go b/go-controller/pkg/ovn/controller/apbroute/repair.go index 195c2783d49..04c6bc0972b 100644 --- a/go-controller/pkg/ovn/controller/apbroute/repair.go +++ b/go-controller/pkg/ovn/controller/apbroute/repair.go @@ -24,7 +24,7 @@ type managedGWIPs struct { gwList gatewayInfoList } -func (c *ExternalGatewayMasterController) repair() { +func (c *ExternalGatewayMasterController) Repair() { start := time.Now() defer func() { klog.V(4).InfoS("Syncing exgw routes took %v", time.Since(start)) diff --git a/go-controller/pkg/ovn/default_network_controller.go b/go-controller/pkg/ovn/default_network_controller.go index 59d70b00f3a..fd82c8dfec5 100644 --- a/go-controller/pkg/ovn/default_network_controller.go +++ b/go-controller/pkg/ovn/default_network_controller.go @@ -391,7 +391,10 @@ func (oc *DefaultNetworkController) Init() error { klog.Errorf("Failed to setup master (%v)", err) return err } - + // Sync external gateway routes. External gateway are set via Admin Policy Based External Route CRs. + // So execute an individual sync method at startup to cleanup any difference + klog.V(4).InfoS("Cleaning External Gateway ECMP routes") + WithSyncDurationMetricNoError("external gateway routes", oc.apbExternalRouteController.Repair) return nil } diff --git a/go-controller/pkg/ovn/external_gateway_test.go b/go-controller/pkg/ovn/external_gateway_test.go index 8fd261b972f..2e702846910 100644 --- a/go-controller/pkg/ovn/external_gateway_test.go +++ b/go-controller/pkg/ovn/external_gateway_test.go @@ -3042,6 +3042,7 @@ func deleteNamespace(namespaceName string, fakeClient kubernetes.Interface) { } func (o *FakeOVN) RunAPBExternalPolicyController() { + o.controller.apbExternalRouteController.Repair() o.controller.wg.Add(1) go func() { defer o.controller.wg.Done()