diff options
author | 2016-08-14 07:31:13 -0700 | |
---|---|---|
committer | 2016-08-14 07:31:13 -0700 | |
commit | cdb7cb68ed6dcfaa5407087d694c2ed2e9efcc86 (patch) | |
tree | 09233e5ce7f06ce7700ba8decbb1138528023a4e /middleware/kubernetes/kubernetes.go | |
parent | e85a8260e339ffcf041ac274771eebd579ca05c9 (diff) | |
parent | ad2838b916e9177d4a4580a6a32f0506e722e1fa (diff) | |
download | coredns-cdb7cb68ed6dcfaa5407087d694c2ed2e9efcc86.tar.gz coredns-cdb7cb68ed6dcfaa5407087d694c2ed2e9efcc86.tar.zst coredns-cdb7cb68ed6dcfaa5407087d694c2ed2e9efcc86.zip |
Merge branch 'master' of github.com:miekg/coredns
Diffstat (limited to 'middleware/kubernetes/kubernetes.go')
-rw-r--r-- | middleware/kubernetes/kubernetes.go | 38 |
1 files changed, 27 insertions, 11 deletions
diff --git a/middleware/kubernetes/kubernetes.go b/middleware/kubernetes/kubernetes.go index 7c64580c1..4fa1e494b 100644 --- a/middleware/kubernetes/kubernetes.go +++ b/middleware/kubernetes/kubernetes.go @@ -15,20 +15,24 @@ import ( "github.com/miekg/dns" "k8s.io/kubernetes/pkg/api" - "k8s.io/kubernetes/pkg/client/unversioned" + unversionedapi "k8s.io/kubernetes/pkg/api/unversioned" + "k8s.io/kubernetes/pkg/labels" + unversionedclient "k8s.io/kubernetes/pkg/client/unversioned" "k8s.io/kubernetes/pkg/client/unversioned/clientcmd" clientcmdapi "k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api" ) type Kubernetes struct { - Next middleware.Handler - Zones []string - Proxy proxy.Proxy // Proxy for looking up names during the resolution process - APIEndpoint string - APIConn *dnsController - ResyncPeriod time.Duration - NameTemplate *nametemplate.NameTemplate - Namespaces []string + Next middleware.Handler + Zones []string + Proxy proxy.Proxy // Proxy for looking up names during the resolution process + APIEndpoint string + APIConn *dnsController + ResyncPeriod time.Duration + NameTemplate *nametemplate.NameTemplate + Namespaces []string + LabelSelector *unversionedapi.LabelSelector + Selector *labels.Selector } func (g *Kubernetes) StartKubeCache() error { @@ -45,14 +49,26 @@ func (g *Kubernetes) StartKubeCache() error { log.Printf("[debug] error connecting to the client: %v", err) return err } - kubeClient, err := unversioned.New(config) + kubeClient, err := unversionedclient.New(config) if err != nil { log.Printf("[ERROR] Failed to create kubernetes notification controller: %v", err) return err } + if g.LabelSelector == nil { + log.Printf("[INFO] Kubernetes middleware configured without a label selector. No label-based filtering will be operformed.") + } else { + var selector labels.Selector + selector, err = unversionedapi.LabelSelectorAsSelector(g.LabelSelector) + g.Selector = &selector + if err != nil { + log.Printf("[ERROR] Unable to create Selector for LabelSelector '%s'.Error was: %s", g.LabelSelector, err) + return err + } + log.Printf("[INFO] Kubernetes middleware configured with the label selector '%s'. Only kubernetes objects matching this label selector will be exposed.", unversionedapi.FormatLabelSelector(g.LabelSelector)) + } log.Printf("[debug] Starting kubernetes middleware with k8s API resync period: %s", g.ResyncPeriod) - g.APIConn = newdnsController(kubeClient, g.ResyncPeriod) + g.APIConn = newdnsController(kubeClient, g.ResyncPeriod, g.Selector) go g.APIConn.Run() |