Context
The recreate path in ensureLoadBalancer (internal/provider/load_balancer.go) runs detach → delete → create when the allocator config changes. If create fails after delete succeeds, the service is left with no floating IP until the next reconcile — and nothing tells the operator what happened or why.
Scope
Emit a warning event (and structured log) identifying the window: the old IP was deleted due to a config change and recreation failed. Should be visible via kubectl describe svc.
Done when
A create failure after delete is diagnosable from service events without reading CCM source code.
Context
The recreate path in
ensureLoadBalancer(internal/provider/load_balancer.go) runs detach → delete → create when the allocator config changes. If create fails after delete succeeds, the service is left with no floating IP until the next reconcile — and nothing tells the operator what happened or why.Scope
Emit a warning event (and structured log) identifying the window: the old IP was deleted due to a config change and recreation failed. Should be visible via
kubectl describe svc.Done when
A create failure after delete is diagnosable from service events without reading CCM source code.