plugin/k8s: Use service IP index in reverse lookups (#1212)
* use index for svc reverse lookup * temp revert * restore reverse.go * restore reverse_test.go
This commit is contained in:
parent
beef212fbe
commit
a78f46fb28
2 changed files with 27 additions and 16 deletions
|
@ -25,15 +25,13 @@ func (k *Kubernetes) Reverse(state request.Request, exact bool, opt plugin.Optio
|
|||
// 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
|
||||
for _, service := range k.APIConn.ServiceList() {
|
||||
for _, service := range k.APIConn.SvcIndexReverse(ip) {
|
||||
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
|
||||
for _, ep := range k.APIConn.EpIndexReverse(ip) {
|
||||
if (len(k.Namespaces) > 0) && !k.namespaceExposed(ep.ObjectMeta.Namespace) {
|
||||
|
|
|
@ -19,11 +19,14 @@ func (APIConnReverseTest) Run() { return }
|
|||
func (APIConnReverseTest) Stop() error { return nil }
|
||||
func (APIConnReverseTest) PodIndex(string) []*api.Pod { return nil }
|
||||
func (APIConnReverseTest) SvcIndex(string) []*api.Service { return nil }
|
||||
func (APIConnReverseTest) SvcIndexReverse(string) []*api.Service { return nil }
|
||||
func (APIConnReverseTest) EpIndex(string) []*api.Endpoints { return nil }
|
||||
func (APIConnReverseTest) EndpointsList() []*api.Endpoints { return nil }
|
||||
func (APIConnReverseTest) ServiceList() []*api.Service { return nil }
|
||||
|
||||
func (APIConnReverseTest) ServiceList() []*api.Service {
|
||||
func (APIConnReverseTest) SvcIndexReverse(ip string) []*api.Service {
|
||||
if ip != "192.168.1.100" {
|
||||
return nil
|
||||
}
|
||||
svcs := []*api.Service{
|
||||
{
|
||||
ObjectMeta: meta.ObjectMeta{
|
||||
|
@ -43,7 +46,10 @@ func (APIConnReverseTest) ServiceList() []*api.Service {
|
|||
return svcs
|
||||
}
|
||||
|
||||
func (APIConnReverseTest) EpIndexReverse(string) []*api.Endpoints {
|
||||
func (APIConnReverseTest) EpIndexReverse(ip string) []*api.Endpoints {
|
||||
if ip != "10.0.0.100" {
|
||||
return nil
|
||||
}
|
||||
eps := []*api.Endpoints{
|
||||
{
|
||||
Subsets: []api.EndpointSubset{
|
||||
|
@ -82,7 +88,7 @@ func (APIConnReverseTest) GetNodeByName(name string) (*api.Node, error) {
|
|||
|
||||
func TestReverse(t *testing.T) {
|
||||
|
||||
k := New([]string{"cluster.local.", "0.10.in-addr.arpa."})
|
||||
k := New([]string{"cluster.local.", "0.10.in-addr.arpa.", "168.192.in-addr.arpa."})
|
||||
k.APIConn = &APIConnReverseTest{}
|
||||
|
||||
tests := []test.Case{
|
||||
|
@ -93,6 +99,13 @@ func TestReverse(t *testing.T) {
|
|||
test.PTR("100.0.0.10.in-addr.arpa. 303 IN PTR ep1a.svc1.testns.svc.cluster.local."),
|
||||
},
|
||||
},
|
||||
{
|
||||
Qname: "100.1.168.192.in-addr.arpa.", Qtype: dns.TypePTR,
|
||||
Rcode: dns.RcodeSuccess,
|
||||
Answer: []dns.RR{
|
||||
test.PTR("100.1.168.192.in-addr.arpa. 303 IN PTR svc1.testns.svc.cluster.local."),
|
||||
},
|
||||
},
|
||||
{
|
||||
Qname: "101.0.0.10.in-addr.arpa.", Qtype: dns.TypePTR,
|
||||
Rcode: dns.RcodeSuccess,
|
||||
|
|
Loading…
Add table
Reference in a new issue