aboutsummaryrefslogtreecommitdiff
path: root/plugin/kubernetes/kubernetes.go
diff options
context:
space:
mode:
authorGravatar Chris O'Haver <cohaver@infoblox.com> 2018-08-27 14:41:04 -0400
committerGravatar Miek Gieben <miek@miek.nl> 2018-08-27 19:41:04 +0100
commite6ef320d13580548a1ff9a36c3b1365240577ac1 (patch)
tree9c49324fdcc4685abd52940afedc5eefe3034a00 /plugin/kubernetes/kubernetes.go
parent444472891ff124d656a247b63dd126240f5eb35b (diff)
downloadcoredns-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.go22
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() }