Commit 50d736ab authored by Geoff Simmons's avatar Geoff Simmons

Controller doesn't watch namespaces when restricted to one namespace.

parent 81a73994
...@@ -238,9 +238,9 @@ func main() { ...@@ -238,9 +238,9 @@ func main() {
informers.WithTweakListOptions(ingressTLSSecrets)) informers.WithTweakListOptions(ingressTLSSecrets))
ingController, err := controller.NewIngressController(log, ingController, err := controller.NewIngressController(log,
*ingressClassF, kubeClient, vController, hController, *ingressClassF, *namespaceF, kubeClient, vController,
informerFactory, vcrInformerFactory, vsecrInformerFactory, hController, informerFactory, vcrInformerFactory,
tsecrInformerFactory, *incomplRetryDelayF) vsecrInformerFactory, tsecrInformerFactory, *incomplRetryDelayF)
if err != nil { if err != nil {
log.Fatalf("Could not initialize controller: %v", err) log.Fatalf("Could not initialize controller: %v", err)
os.Exit(-1) os.Exit(-1)
......
...@@ -129,6 +129,7 @@ type IngressController struct { ...@@ -129,6 +129,7 @@ type IngressController struct {
ctx context.Context ctx context.Context
cancel context.CancelFunc cancel context.CancelFunc
recorder record.EventRecorder recorder record.EventRecorder
namespace string
} }
// NewIngressController creates a controller. // NewIngressController creates a controller.
...@@ -143,6 +144,7 @@ type IngressController struct { ...@@ -143,6 +144,7 @@ type IngressController struct {
func NewIngressController( func NewIngressController(
log *logrus.Logger, log *logrus.Logger,
ingClass string, ingClass string,
namespace string,
kubeClient kubernetes.Interface, kubeClient kubernetes.Interface,
vc *varnish.Controller, vc *varnish.Controller,
hc *haproxy.Controller, hc *haproxy.Controller,
...@@ -154,8 +156,9 @@ func NewIngressController( ...@@ -154,8 +156,9 @@ func NewIngressController(
) (*IngressController, error) { ) (*IngressController, error) {
ingc := IngressController{ ingc := IngressController{
log: log, log: log,
client: kubeClient, client: kubeClient,
namespace: namespace,
} }
InitMetrics() InitMetrics()
...@@ -182,7 +185,6 @@ func NewIngressController( ...@@ -182,7 +185,6 @@ func NewIngressController(
ing: infFactory.Extensions().V1beta1().Ingresses().Informer(), ing: infFactory.Extensions().V1beta1().Ingresses().Informer(),
svc: infFactory.Core().V1().Services().Informer(), svc: infFactory.Core().V1().Services().Informer(),
endp: infFactory.Core().V1().Endpoints().Informer(), endp: infFactory.Core().V1().Endpoints().Informer(),
ns: infFactory.Core().V1().Namespaces().Informer(),
vsecr: vsecrInfFactory.Core().V1().Secrets().Informer(), vsecr: vsecrInfFactory.Core().V1().Secrets().Informer(),
tsecr: tsecrInfFactory.Core().V1().Secrets().Informer(), tsecr: tsecrInfFactory.Core().V1().Secrets().Informer(),
vcfg: vcrInfFactory.Ingress().V1alpha1().VarnishConfigs(). vcfg: vcrInfFactory.Ingress().V1alpha1().VarnishConfigs().
...@@ -205,10 +207,14 @@ func NewIngressController( ...@@ -205,10 +207,14 @@ func NewIngressController(
ingc.informers.vcfg.AddEventHandler(evtFuncs) ingc.informers.vcfg.AddEventHandler(evtFuncs)
ingc.informers.bcfg.AddEventHandler(evtFuncs) ingc.informers.bcfg.AddEventHandler(evtFuncs)
nsDeleteFunc := cache.ResourceEventHandlerFuncs{ if namespace == api_v1.NamespaceAll {
DeleteFunc: ingc.deleteNs, ingc.informers.ns =
infFactory.Core().V1().Namespaces().Informer()
nsDeleteFunc := cache.ResourceEventHandlerFuncs{
DeleteFunc: ingc.deleteNs,
}
ingc.informers.ns.AddEventHandler(nsDeleteFunc)
} }
ingc.informers.ns.AddEventHandler(nsDeleteFunc)
ingc.listers = &Listers{ ingc.listers = &Listers{
ing: infFactory.Extensions().V1beta1().Ingresses().Lister(), ing: infFactory.Extensions().V1beta1().Ingresses().Lister(),
...@@ -393,7 +399,9 @@ func (ingc *IngressController) Run(readyFile string, metricsPort uint16) { ...@@ -393,7 +399,9 @@ func (ingc *IngressController) Run(readyFile string, metricsPort uint16) {
go ingc.informers.vsecr.Run(ingc.ctx.Done()) go ingc.informers.vsecr.Run(ingc.ctx.Done())
go ingc.informers.vcfg.Run(ingc.ctx.Done()) go ingc.informers.vcfg.Run(ingc.ctx.Done())
go ingc.informers.bcfg.Run(ingc.ctx.Done()) go ingc.informers.bcfg.Run(ingc.ctx.Done())
go ingc.informers.ns.Run(ingc.ctx.Done()) if ingc.namespace == api_v1.NamespaceAll {
go ingc.informers.ns.Run(ingc.ctx.Done())
}
ingc.log.Infof("Starting metrics listener at port %d", metricsPort) ingc.log.Infof("Starting metrics listener at port %d", metricsPort)
go ServeMetrics(ingc.log, metricsPort) go ServeMetrics(ingc.log, metricsPort)
...@@ -416,8 +424,7 @@ func (ingc *IngressController) Run(readyFile string, metricsPort uint16) { ...@@ -416,8 +424,7 @@ func (ingc *IngressController) Run(readyFile string, metricsPort uint16) {
ingc.log.Infof("Created ready file %s", readyFile) ingc.log.Infof("Created ready file %s", readyFile)
} }
ingc.log.Info("Waiting for caches to sync") syncs := []cache.InformerSynced{
if ok := cache.WaitForCacheSync(ingc.ctx.Done(),
ingc.informers.ing.HasSynced, ingc.informers.ing.HasSynced,
ingc.informers.svc.HasSynced, ingc.informers.svc.HasSynced,
ingc.informers.endp.HasSynced, ingc.informers.endp.HasSynced,
...@@ -425,8 +432,13 @@ func (ingc *IngressController) Run(readyFile string, metricsPort uint16) { ...@@ -425,8 +432,13 @@ func (ingc *IngressController) Run(readyFile string, metricsPort uint16) {
ingc.informers.vsecr.HasSynced, ingc.informers.vsecr.HasSynced,
ingc.informers.vcfg.HasSynced, ingc.informers.vcfg.HasSynced,
ingc.informers.bcfg.HasSynced, ingc.informers.bcfg.HasSynced,
ingc.informers.ns.HasSynced); !ok { }
if ingc.namespace == api_v1.NamespaceAll {
syncs = append(syncs, ingc.informers.ns.HasSynced)
}
ingc.log.Info("Waiting for caches to sync")
if ok := cache.WaitForCacheSync(ingc.ctx.Done(), syncs...); !ok {
err := fmt.Errorf("Failed waiting for caches to sync") err := fmt.Errorf("Failed waiting for caches to sync")
utilruntime.HandleError(err) utilruntime.HandleError(err)
return return
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment