@@ -27,6 +27,7 @@ import (
27
27
corev1client "k8s.io/client-go/kubernetes/typed/core/v1"
28
28
"k8s.io/client-go/rest"
29
29
"k8s.io/client-go/tools/leaderelection/resourcelock"
30
+
30
31
"sigs.k8s.io/controller-runtime/pkg/recorder"
31
32
)
32
33
@@ -39,7 +40,7 @@ type Options struct {
39
40
LeaderElection bool
40
41
41
42
// LeaderElectionResourceLock determines which resource lock to use for leader election,
42
- // defaults to "configmapsleases ".
43
+ // defaults to "leases ".
43
44
LeaderElectionResourceLock string
44
45
45
46
// LeaderElectionNamespace determines the namespace in which the leader
@@ -57,11 +58,12 @@ func NewResourceLock(config *rest.Config, recorderProvider recorder.Provider, op
57
58
return nil , nil
58
59
}
59
60
60
- // Default resource lock to "configmapsleases". We must keep this default until we are sure all controller-runtime
61
- // users have upgraded from the original default ConfigMap lock to a controller-runtime version that has this new
62
- // default. Many users of controller-runtime skip versions, so we should be extremely conservative here.
61
+ // Default resource lock to "leases". The previous default (from v0.7.0 to v0.11.x) was configmapsleases, which was
62
+ // used to migrate from configmaps to leases. Since the default was "configmapsleases" for over a year, spanning
63
+ // five minor releases, any actively maintained operators are very likely to have a released version that uses
64
+ // "configmapsleases". Therefore defaulting to "leases" should be safe.
63
65
if options .LeaderElectionResourceLock == "" {
64
- options .LeaderElectionResourceLock = resourcelock .ConfigMapsLeasesResourceLock
66
+ options .LeaderElectionResourceLock = resourcelock .LeasesResourceLock
65
67
}
66
68
67
69
// LeaderElectionID must be provided to prevent clashes
0 commit comments