@@ -91,17 +91,18 @@ func (l loadbalancer) UpdateLoadBalancer(ctx context.Context, clusterName string
9191func (l loadbalancer ) EnsureLoadBalancerDeleted (ctx context.Context , clusterName string , service * v1.Service ) error {
9292 klog .Infof ("ensureLoadBalancerDeleted (service %s/%s)" , service .Namespace , service .Name )
9393
94- if service .Spec .LoadBalancerIP == "" {
95- return errors .New ("we are only handling LoadBalancers with spec.loadBalancerID != ''" )
96- }
97-
98- server , err := l .ServerWithLoadBalancer (ctx , service .Spec .LoadBalancerIP )
99- if err != nil {
100- return err
101- }
94+ if len (service .Status .LoadBalancer .Ingress ) > 0 {
95+ klog .Infof ("removing IP %s" , service .Status .LoadBalancer .Ingress [0 ].IP )
96+ server , err := l .ServerWithLoadBalancer (ctx , service .Status .LoadBalancer .Ingress [0 ].IP )
97+ if err != nil {
98+ return err
99+ }
102100
103- if server != nil {
104- return l .deleteLoadBalancerFromNode (ctx , service .Spec .LoadBalancerIP , server )
101+ if server != nil {
102+ if err := l .deleteLoadBalancerFromNode (ctx , service .Status .LoadBalancer .Ingress [0 ].IP , server ); err != nil {
103+ return err
104+ }
105+ }
105106 }
106107
107108 return nil
@@ -130,10 +131,6 @@ func (l loadbalancer) deleteLoadBalancerFromNode(ctx context.Context, loadBalanc
130131func (l loadbalancer ) syncLoadBalancer (ctx context.Context , clusterName string , service * v1.Service , nodes []* v1.Node ) (* v1.LoadBalancerStatus , error ) {
131132 klog .Infof ("syncLoadBalancer (service %s/%s, nodes %s)" , service .Namespace , service .Name , nodes )
132133
133- if service .Spec .LoadBalancerIP == "" {
134- return nil , errors .New ("we are only handling LoadBalancers with spec.loadBalancerID != ''" )
135- }
136-
137134 if len (service .Status .LoadBalancer .Ingress ) > 0 && service .Status .LoadBalancer .Ingress [0 ].IP != service .Spec .LoadBalancerIP {
138135 klog .Infof ("service %s/%s changed IP from %s to %s" , service .Namespace , service .Name , service .Status .LoadBalancer .Ingress [0 ].IP , service .Spec .LoadBalancerIP )
139136 server , err := l .ServerWithLoadBalancer (ctx , service .Status .LoadBalancer .Ingress [0 ].IP )
@@ -148,6 +145,10 @@ func (l loadbalancer) syncLoadBalancer(ctx context.Context, clusterName string,
148145 }
149146 }
150147
148+ if service .Spec .LoadBalancerIP == "" {
149+ return nil , errors .New ("we are only handling LoadBalancers with spec.loadBalancerID != ''" )
150+ }
151+
151152 server , err := l .ServerWithLoadBalancer (ctx , service .Spec .LoadBalancerIP )
152153 if err != nil {
153154 return nil , err
0 commit comments