fix: enable LeaderElectionReleaseOnCancel for smooth RollingUpdates

Enable the LeaderElectionReleaseOnCancel option in the controller manager
to fix a deadlock issue during RollingUpdate deployments with leader
election enabled.

Without this setting, the old pod holds the leader lease during shutdown,
preventing the new pod from becoming ready. This creates a deadlock where
Kubernetes won't terminate the old pod because the new pod isn't ready,
and the new pod can't become ready because it can't acquire the lease.

With LeaderElectionReleaseOnCancel enabled, the old pod voluntarily
releases the lease when it receives a shutdown signal, allowing the new
pod to acquire leadership immediately and become ready, enabling smooth
rolling updates.

Signed-off-by: Armando Ruocco <armando.ruocco@enterprisedb.com>
This commit is contained in:
Armando Ruocco 2025-10-23 16:11:58 +02:00 committed by Leonardo Cecchi
parent 782fe772f7
commit f73945ed55

View File

@ -119,7 +119,7 @@ func Start(ctx context.Context) error {
// the manager stops, so would be fine to enable this option. However,
// if you are doing or is intended to do any operation such as perform cleanups
// after the manager stops then its usage might be unsafe.
// LeaderElectionReleaseOnCancel: true,
LeaderElectionReleaseOnCancel: true,
})
if err != nil {
setupLog.Error(err, "unable to start manager")