diff options
author | 2018-08-27 14:41:04 -0400 | |
---|---|---|
committer | 2018-08-27 19:41:04 +0100 | |
commit | e6ef320d13580548a1ff9a36c3b1365240577ac1 (patch) | |
tree | 9c49324fdcc4685abd52940afedc5eefe3034a00 /plugin/kubernetes/kubernetes.go | |
parent | 444472891ff124d656a247b63dd126240f5eb35b (diff) | |
download | coredns-e6ef320d13580548a1ff9a36c3b1365240577ac1.tar.gz coredns-e6ef320d13580548a1ff9a36c3b1365240577ac1.tar.zst coredns-e6ef320d13580548a1ff9a36c3b1365240577ac1.zip |
handle blank name and namespaces (#2042)
Diffstat (limited to 'plugin/kubernetes/kubernetes.go')
-rw-r--r-- | plugin/kubernetes/kubernetes.go | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/plugin/kubernetes/kubernetes.go b/plugin/kubernetes/kubernetes.go index eaadb142c..4bdcd4877 100644 --- a/plugin/kubernetes/kubernetes.go +++ b/plugin/kubernetes/kubernetes.go @@ -343,6 +343,16 @@ func (k *Kubernetes) findPods(r recordRequest, zone string) (pods []msg.Service, zonePath := msg.Path(zone, "coredns") ip := "" + // handle empty pod name + if podname == "" { + if k.namespace(namespace) || wildcard(namespace) { + // NODATA + return nil, nil + } + // NXDOMAIN + return nil, errNoItems + } + if strings.Count(podname, "-") == 3 && !strings.Contains(podname, "--") { ip = strings.Replace(podname, "-", ".", -1) } else { @@ -362,6 +372,7 @@ func (k *Kubernetes) findPods(r recordRequest, zone string) (pods []msg.Service, return []msg.Service{{Key: strings.Join([]string{zonePath, Pod, namespace, podname}, "/"), Host: ip, TTL: k.ttl}}, err } + // PodModeVerified err = errNoItems if wildcard(podname) && !wildcard(namespace) { // If namespace exist, err should be nil, so that we return nodata instead of NXDOMAIN @@ -370,7 +381,6 @@ func (k *Kubernetes) findPods(r recordRequest, zone string) (pods []msg.Service, } } - // PodModeVerified for _, p := range k.APIConn.PodIndex(ip) { // If namespace has a wildcard, filter results against Corefile namespace list. if wildcard(namespace) && !k.namespaceExposed(p.Namespace) { @@ -411,6 +421,16 @@ func (k *Kubernetes) findServices(r recordRequest, zone string) (services []msg. serviceList []*api.Service ) + // handle empty service name + if r.service == "" { + if k.namespace(r.namespace) || wildcard(r.namespace) { + // NODATA + return nil, nil + } + // NXDOMAIN + return nil, errNoItems + } + if wildcard(r.service) || wildcard(r.namespace) { serviceList = k.APIConn.ServiceList() endpointsListFunc = func() []*api.Endpoints { return k.APIConn.EndpointsList() } |