diff --git a/core/pkg/ingress/controller/controller.go b/core/pkg/ingress/controller/controller.go index 0523d30632..1052d8ffe8 100644 --- a/core/pkg/ingress/controller/controller.go +++ b/core/pkg/ingress/controller/controller.go @@ -134,6 +134,7 @@ type Configuration struct { Backend ingress.Controller UpdateStatus bool + ElectionID string } // newIngressController creates an Ingress controller @@ -303,6 +304,7 @@ func newIngressController(config *Configuration) *GenericController { Client: config.Client, PublishService: ic.cfg.PublishService, IngressLister: ic.ingLister, + ElectionID: config.ElectionID, }) } else { glog.Warning("Update of ingress status is disabled (flag --update-status=false was specified)") diff --git a/core/pkg/ingress/controller/launch.go b/core/pkg/ingress/controller/launch.go index ce23f9a5c8..216682bdd2 100644 --- a/core/pkg/ingress/controller/launch.go +++ b/core/pkg/ingress/controller/launch.go @@ -82,6 +82,8 @@ func NewIngressController(backend ingress.Controller) *GenericController { updateStatus = flags.Bool("update-status", true, `Indicates if the ingress controller should update the Ingress status IP/hostname. Default is true`) + + electionID = flags.String("election-id", "ingress-controller-leader", `Election id to use for status update.`) ) backend.OverrideFlags(flags) @@ -137,6 +139,7 @@ func NewIngressController(backend ingress.Controller) *GenericController { config := &Configuration{ UpdateStatus: *updateStatus, + ElectionID: *electionID, Client: kubeClient, ResyncPeriod: *resyncPeriod, DefaultService: *defaultSvc, diff --git a/core/pkg/ingress/status/status.go b/core/pkg/ingress/status/status.go index 09ddb702d9..6000c7f6b6 100644 --- a/core/pkg/ingress/status/status.go +++ b/core/pkg/ingress/status/status.go @@ -52,6 +52,7 @@ type Config struct { Client clientset.Interface PublishService string IngressLister cache_store.StoreToIngressLister + ElectionID string } // statusSync keeps the status IP in each Ingress rule updated executing a periodic check @@ -171,7 +172,7 @@ func NewStatusSyncer(config Config) Sync { } st.syncQueue = task.NewCustomTaskQueue(st.sync, st.keyfunc) - le, err := NewElection("ingress-controller-leader", + le, err := NewElection(config.ElectionID, pod.Name, pod.Namespace, 30*time.Second, st.callback, config.Client) if err != nil {