diff --git a/main.go b/main.go
index e6b70178e9b541fa8e911041f48bf6695fdc1bb3..72550b0114f756ccba63a292a5002169b7bd42fe 100644
--- a/main.go
+++ b/main.go
@@ -46,26 +46,32 @@ func init() {
 func main() {
 	var metricsAddr string
 	var enableLeaderElection bool
+	var leaderElectionID string
 	var disableApprovedCheck bool
 
+	// Options for configuring logging
+	opts := zap.Options{}
+	opts.BindFlags(flag.CommandLine)
+
 	flag.StringVar(&metricsAddr, "metrics-addr", ":8080", "The address the metric endpoint binds to.")
 	flag.BoolVar(&enableLeaderElection, "enable-leader-election", false,
 		"Enable leader election for controller manager. Enabling this will ensure there is only one active controller manager.")
+	flag.StringVar(&leaderElectionID, "leader-election-id", "",
+		"The name of the resource that leader election will use for holding the leader lock.")
 	flag.BoolVar(&disableApprovedCheck, "disable-approval-check", false,
 		"Disables waiting for CertificateRequests to have an approved condition before signing.")
-
-	// Options for configuring logging
-	opts := zap.Options{}
-	opts.BindFlags(flag.CommandLine)
-
 	flag.Parse()
 
-	ctrl.SetLogger(zap.New(zap.UseFlagOptions(&opts)))
+	if enableLeaderElection && leaderElectionID == "" {
+		leaderElectionID = "step-issuer-operator-lock"
+	}
 
+	ctrl.SetLogger(zap.New(zap.UseFlagOptions(&opts)))
 	mgr, err := ctrl.NewManager(ctrl.GetConfigOrDie(), ctrl.Options{
 		Scheme:             scheme,
 		MetricsBindAddress: metricsAddr,
 		LeaderElection:     enableLeaderElection,
+		LeaderElectionID:   leaderElectionID,
 	})
 	if err != nil {
 		setupLog.Error(err, "unable to start manager")