From 12db6618c82c6e6687c8610edfb1c0a0e352ced3 Mon Sep 17 00:00:00 2001 From: Miek Gieben Date: Tue, 22 Aug 2017 21:52:18 +0100 Subject: mw/kubernetes: resync to opts (#957) * mw/kubernetes: resync to opts Only used to initialize the cache that already has a dnsControlopts, so remove it from the main kubernetes struct. * Fix test * mw/kubernetes: LabelSelector to options as well Labels select is also only used for init. Don't carry it in the main kubernetes struct. * remove this test: can't happen Caddyfile parser will only call setup when it sees kubernetes. * erge gone wrong --- middleware/kubernetes/controller.go | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) (limited to 'middleware/kubernetes/controller.go') diff --git a/middleware/kubernetes/controller.go b/middleware/kubernetes/controller.go index 3d60718ee..b809264e1 100644 --- a/middleware/kubernetes/controller.go +++ b/middleware/kubernetes/controller.go @@ -9,6 +9,7 @@ import ( "k8s.io/client-go/1.5/kubernetes" "k8s.io/client-go/1.5/pkg/api" + unversionedapi "k8s.io/client-go/1.5/pkg/api/unversioned" "k8s.io/client-go/1.5/pkg/api/v1" "k8s.io/client-go/1.5/pkg/labels" "k8s.io/client-go/1.5/pkg/runtime" @@ -71,13 +72,17 @@ type dnsControl struct { type dnsControlOpts struct { initPodCache bool + resyncPeriod time.Duration + // Label handling. + labelSelector *unversionedapi.LabelSelector + selector *labels.Selector } // newDNSController creates a controller for CoreDNS. -func newdnsController(kubeClient *kubernetes.Clientset, resyncPeriod time.Duration, lselector *labels.Selector, opts dnsControlOpts) *dnsControl { +func newdnsController(kubeClient *kubernetes.Clientset, opts dnsControlOpts) *dnsControl { dns := dnsControl{ client: kubeClient, - selector: lselector, + selector: opts.selector, stopCh: make(chan struct{}), } @@ -87,7 +92,7 @@ func newdnsController(kubeClient *kubernetes.Clientset, resyncPeriod time.Durati WatchFunc: serviceWatchFunc(dns.client, namespace, dns.selector), }, &api.Service{}, - resyncPeriod, + opts.resyncPeriod, cache.ResourceEventHandlerFuncs{}, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}) @@ -98,7 +103,7 @@ func newdnsController(kubeClient *kubernetes.Clientset, resyncPeriod time.Durati WatchFunc: podWatchFunc(dns.client, namespace, dns.selector), }, &api.Pod{}, // TODO replace with a lighter-weight custom struct - resyncPeriod, + opts.resyncPeriod, cache.ResourceEventHandlerFuncs{}, cache.Indexers{podIPIndex: podIPIndexFunc}) } @@ -108,14 +113,18 @@ func newdnsController(kubeClient *kubernetes.Clientset, resyncPeriod time.Durati ListFunc: namespaceListFunc(dns.client, dns.selector), WatchFunc: namespaceWatchFunc(dns.client, dns.selector), }, - &api.Namespace{}, resyncPeriod, cache.ResourceEventHandlerFuncs{}) + &api.Namespace{}, + opts.resyncPeriod, + cache.ResourceEventHandlerFuncs{}) dns.epLister.Store, dns.epController = cache.NewInformer( &cache.ListWatch{ ListFunc: endpointsListFunc(dns.client, namespace, dns.selector), WatchFunc: endpointsWatchFunc(dns.client, namespace, dns.selector), }, - &api.Endpoints{}, resyncPeriod, cache.ResourceEventHandlerFuncs{}) + &api.Endpoints{}, + opts.resyncPeriod, + cache.ResourceEventHandlerFuncs{}) return &dns } -- cgit v1.2.3