diff options
Diffstat (limited to 'plugin/kubernetes/ns.go')
-rw-r--r-- | plugin/kubernetes/ns.go | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/plugin/kubernetes/ns.go b/plugin/kubernetes/ns.go index 722dc9ef4..2ccb51ef3 100644 --- a/plugin/kubernetes/ns.go +++ b/plugin/kubernetes/ns.go @@ -4,7 +4,6 @@ import ( "net" "strings" - "github.com/coredns/coredns/plugin/kubernetes/object" "github.com/miekg/dns" api "k8s.io/api/core/v1" ) @@ -23,9 +22,8 @@ func (k *Kubernetes) nsAddr() *dns.A { localIP := k.interfaceAddrsFunc() rr.A = localIP - ep := k.APIConn.EpIndexReverse(localIP.String()) - if ep != nil { - FindEndpoint: +FindEndpoint: + for _, ep := range k.APIConn.EpIndexReverse(localIP.String()) { for _, eps := range ep.Subsets { for _, addr := range eps.Addresses { if localIP.Equal(net.ParseIP(addr.IP)) { @@ -43,12 +41,15 @@ func (k *Kubernetes) nsAddr() *dns.A { return rr } - svc := k.APIConn.SvcIndex(object.ServiceKey(svcNamespace, svcName)) - if svc != nil { - if svc.ClusterIP == api.ClusterIPNone { - rr.A = localIP - } else { - rr.A = net.ParseIP(svc.ClusterIP) +FindService: + for _, svc := range k.APIConn.ServiceList() { + if svcName == svc.Name && svcNamespace == svc.Namespace { + if svc.ClusterIP == api.ClusterIPNone { + rr.A = localIP + } else { + rr.A = net.ParseIP(svc.ClusterIP) + } + break FindService } } |