diff options
Diffstat (limited to 'middleware/kubernetes/reverse.go')
-rw-r--r-- | middleware/kubernetes/reverse.go | 55 |
1 files changed, 0 insertions, 55 deletions
diff --git a/middleware/kubernetes/reverse.go b/middleware/kubernetes/reverse.go deleted file mode 100644 index 25ece8035..000000000 --- a/middleware/kubernetes/reverse.go +++ /dev/null @@ -1,55 +0,0 @@ -package kubernetes - -import ( - "strings" - - "github.com/coredns/coredns/middleware" - "github.com/coredns/coredns/middleware/etcd/msg" - "github.com/coredns/coredns/middleware/pkg/dnsutil" - "github.com/coredns/coredns/request" -) - -// Reverse implements the ServiceBackend interface. -func (k *Kubernetes) Reverse(state request.Request, exact bool, opt middleware.Options) ([]msg.Service, error) { - - ip := dnsutil.ExtractAddressFromReverse(state.Name()) - if ip == "" { - return nil, nil - } - - records := k.serviceRecordForIP(ip, state.Name()) - return records, nil -} - -// serviceRecordForIP gets a service record with a cluster ip matching the ip argument -// If a service cluster ip does not match, it checks all endpoints -func (k *Kubernetes) serviceRecordForIP(ip, name string) []msg.Service { - // First check services with cluster ips - svcList := k.APIConn.ServiceList() - - for _, service := range svcList { - if (len(k.Namespaces) > 0) && !k.namespaceExposed(service.Namespace) { - continue - } - if service.Spec.ClusterIP == ip { - domain := strings.Join([]string{service.Name, service.Namespace, Svc, k.primaryZone()}, ".") - return []msg.Service{{Host: domain}} - } - } - // If no cluster ips match, search endpoints - epList := k.APIConn.EndpointsList() - for _, ep := range epList.Items { - if (len(k.Namespaces) > 0) && !k.namespaceExposed(ep.ObjectMeta.Namespace) { - continue - } - for _, eps := range ep.Subsets { - for _, addr := range eps.Addresses { - if addr.IP == ip { - domain := strings.Join([]string{endpointHostname(addr), ep.ObjectMeta.Name, ep.ObjectMeta.Namespace, Svc, k.primaryZone()}, ".") - return []msg.Service{{Host: domain}} - } - } - } - } - return nil -} |