diff --git a/core/pkg/ingress/controller/controller.go b/core/pkg/ingress/controller/controller.go index a5f3917788..b82fae771b 100644 --- a/core/pkg/ingress/controller/controller.go +++ b/core/pkg/ingress/controller/controller.go @@ -128,6 +128,8 @@ type Configuration struct { // Backend is the particular implementation to be used. // (for instance NGINX) Backend ingress.Controller + + UpdateStatus bool } // newIngressController creates an Ingress controller @@ -257,11 +259,15 @@ func newIngressController(config *Configuration) *GenericController { cache.ResourceEventHandlerFuncs{}, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}) - ic.syncStatus = status.NewStatusSyncer(status.Config{ - Client: config.Client, - PublishService: ic.cfg.PublishService, - IngressLister: ic.ingLister, - }) + if config.UpdateStatus { + ic.syncStatus = status.NewStatusSyncer(status.Config{ + Client: config.Client, + PublishService: ic.cfg.PublishService, + IngressLister: ic.ingLister, + }) + } else { + glog.Warning("Update of ingress status is disabled (flag --update-status=false was specified)") + } ic.annotations = newAnnotationExtractor(ic) @@ -970,7 +976,9 @@ func (ic GenericController) Stop() error { close(ic.stopCh) go ic.syncQueue.Shutdown() go ic.secretQueue.Shutdown() - ic.syncStatus.Shutdown() + if ic.syncStatus != nil { + ic.syncStatus.Shutdown() + } return nil } @@ -990,7 +998,9 @@ func (ic GenericController) Start() { go ic.secretQueue.Run(5*time.Second, ic.stopCh) go ic.syncQueue.Run(5*time.Second, ic.stopCh) - go ic.syncStatus.Run(ic.stopCh) + if ic.syncStatus != nil { + go ic.syncStatus.Run(ic.stopCh) + } <-ic.stopCh } diff --git a/core/pkg/ingress/controller/launch.go b/core/pkg/ingress/controller/launch.go index 95e50c877b..eecc9b39e9 100644 --- a/core/pkg/ingress/controller/launch.go +++ b/core/pkg/ingress/controller/launch.go @@ -73,6 +73,9 @@ func NewIngressController(backend ingress.Controller) *GenericController { defHealthzURL = flags.String("health-check-path", "/healthz", `Defines the URL to be used as health check inside in the default server in NGINX.`) + + updateStatus = flags.Bool("update-status", true, `Indicates if the + ingress controller should update the Ingress status IP/hostname. Default is true`) ) flags.AddGoFlagSet(flag.CommandLine) @@ -134,6 +137,7 @@ func NewIngressController(backend ingress.Controller) *GenericController { os.MkdirAll(ingress.DefaultSSLDirectory, 0655) config := &Configuration{ + UpdateStatus: *updateStatus, Client: kubeClient, ResyncPeriod: *resyncPeriod, DefaultService: *defaultSvc,