Allows local search lookup "_endpoints.servicename" without requiring
a search domain.
... | ... |
@@ -42,8 +42,8 @@ func openshiftFallback(name string, exact bool) (string, bool) { |
42 | 42 |
if name == "openshift.default.svc" { |
43 | 43 |
return "kubernetes.default.svc.", true |
44 | 44 |
} |
45 |
- if name == "openshift.default.endpoints" { |
|
46 |
- return "kubernetes.default.endpoints.", true |
|
45 |
+ if name == "_endpoints.openshift.default.svc" { |
|
46 |
+ return "_endpoints.kubernetes.default.", true |
|
47 | 47 |
} |
48 | 48 |
return "", false |
49 | 49 |
} |
... | ... |
@@ -94,8 +94,10 @@ func (b *ServiceResolver) Records(name string, exact bool) ([]msg.Service, error |
94 | 94 |
return nil, nil |
95 | 95 |
} |
96 | 96 |
|
97 |
+ retrieveEndpoints := segments[0] == "endpoints" || (len(segments) > 3 && segments[3] == "_endpoints") |
|
98 |
+ |
|
97 | 99 |
// if has a portal IP and looking at svc |
98 |
- if svc.Spec.PortalIP != kapi.PortalIPNone && segments[0] == "svc" { |
|
100 |
+ if svc.Spec.PortalIP != kapi.PortalIPNone && !retrieveEndpoints { |
|
99 | 101 |
if len(svc.Spec.Ports) == 0 { |
100 | 102 |
return nil, nil |
101 | 103 |
} |
... | ... |
@@ -128,7 +128,7 @@ func TestDNS(t *testing.T) { |
128 | 128 |
expect: []*net.IP{&masterIP}, |
129 | 129 |
}, |
130 | 130 |
{ // resolving endpoints of a service works |
131 |
- dnsQuestionName: "kubernetes.default.endpoints.cluster.local.", |
|
131 |
+ dnsQuestionName: "_endpoints.kubernetes.default.svc.cluster.local.", |
|
132 | 132 |
expect: []*net.IP{&localIP}, |
133 | 133 |
}, |
134 | 134 |
{ // openshift override works |