plugin/kubernetes: Fix reverse TTL response (#1240)

Remove most 303 TTLs (those get skipped by the test) and use 5, which is
the default for all tests.
This commit is contained in:
Miek Gieben 2017-11-15 15:04:17 +00:00 committed by GitHub
parent 621dd36f6d
commit 70a5a098c1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 29 additions and 29 deletions

View file

@ -32,29 +32,29 @@ var dnsTestCases = []test.Case{
{ {
Qname: "svc1.testns.svc.cluster.local.", Qtype: dns.TypeSRV, Qname: "svc1.testns.svc.cluster.local.", Qtype: dns.TypeSRV,
Rcode: dns.RcodeSuccess, Rcode: dns.RcodeSuccess,
Answer: []dns.RR{test.SRV("svc1.testns.svc.cluster.local. 303 IN SRV 0 100 80 svc1.testns.svc.cluster.local.")}, Answer: []dns.RR{test.SRV("svc1.testns.svc.cluster.local. 5 IN SRV 0 100 80 svc1.testns.svc.cluster.local.")},
Extra: []dns.RR{test.A("svc1.testns.svc.cluster.local. 303 IN A 10.0.0.1")}, Extra: []dns.RR{test.A("svc1.testns.svc.cluster.local. 5 IN A 10.0.0.1")},
}, },
// SRV Service (wildcard) // SRV Service (wildcard)
{ {
Qname: "svc1.*.svc.cluster.local.", Qtype: dns.TypeSRV, Qname: "svc1.*.svc.cluster.local.", Qtype: dns.TypeSRV,
Rcode: dns.RcodeSuccess, Rcode: dns.RcodeSuccess,
Answer: []dns.RR{test.SRV("svc1.*.svc.cluster.local. 303 IN SRV 0 100 80 svc1.testns.svc.cluster.local.")}, Answer: []dns.RR{test.SRV("svc1.*.svc.cluster.local. 5 IN SRV 0 100 80 svc1.testns.svc.cluster.local.")},
Extra: []dns.RR{test.A("svc1.testns.svc.cluster.local. 303 IN A 10.0.0.1")}, Extra: []dns.RR{test.A("svc1.testns.svc.cluster.local. 5 IN A 10.0.0.1")},
}, },
// SRV Service (wildcards) // SRV Service (wildcards)
{ {
Qname: "*.any.svc1.*.svc.cluster.local.", Qtype: dns.TypeSRV, Qname: "*.any.svc1.*.svc.cluster.local.", Qtype: dns.TypeSRV,
Rcode: dns.RcodeSuccess, Rcode: dns.RcodeSuccess,
Answer: []dns.RR{test.SRV("*.any.svc1.*.svc.cluster.local. 303 IN SRV 0 100 80 svc1.testns.svc.cluster.local.")}, Answer: []dns.RR{test.SRV("*.any.svc1.*.svc.cluster.local. 5 IN SRV 0 100 80 svc1.testns.svc.cluster.local.")},
Extra: []dns.RR{test.A("svc1.testns.svc.cluster.local. 303 IN A 10.0.0.1")}, Extra: []dns.RR{test.A("svc1.testns.svc.cluster.local. 5 IN A 10.0.0.1")},
}, },
// A Service (wildcards) // A Service (wildcards)
{ {
Qname: "*.any.svc1.*.svc.cluster.local.", Qtype: dns.TypeA, Qname: "*.any.svc1.*.svc.cluster.local.", Qtype: dns.TypeA,
Rcode: dns.RcodeSuccess, Rcode: dns.RcodeSuccess,
Answer: []dns.RR{ Answer: []dns.RR{
test.A("*.any.svc1.*.svc.cluster.local. 303 IN A 10.0.0.1"), test.A("*.any.svc1.*.svc.cluster.local. 5 IN A 10.0.0.1"),
}, },
}, },
// SRV Service Not udp/tcp // SRV Service Not udp/tcp
@ -70,10 +70,10 @@ var dnsTestCases = []test.Case{
Qname: "_http._tcp.svc1.testns.svc.cluster.local.", Qtype: dns.TypeSRV, Qname: "_http._tcp.svc1.testns.svc.cluster.local.", Qtype: dns.TypeSRV,
Rcode: dns.RcodeSuccess, Rcode: dns.RcodeSuccess,
Answer: []dns.RR{ Answer: []dns.RR{
test.SRV("_http._tcp.svc1.testns.svc.cluster.local. 303 IN SRV 0 100 80 svc1.testns.svc.cluster.local."), test.SRV("_http._tcp.svc1.testns.svc.cluster.local. 5 IN SRV 0 100 80 svc1.testns.svc.cluster.local."),
}, },
Extra: []dns.RR{ Extra: []dns.RR{
test.A("svc1.testns.svc.cluster.local. 303 IN A 10.0.0.1"), test.A("svc1.testns.svc.cluster.local. 5 IN A 10.0.0.1"),
}, },
}, },
// A Service (Headless) // A Service (Headless)
@ -81,8 +81,8 @@ var dnsTestCases = []test.Case{
Qname: "hdls1.testns.svc.cluster.local.", Qtype: dns.TypeA, Qname: "hdls1.testns.svc.cluster.local.", Qtype: dns.TypeA,
Rcode: dns.RcodeSuccess, Rcode: dns.RcodeSuccess,
Answer: []dns.RR{ Answer: []dns.RR{
test.A("hdls1.testns.svc.cluster.local. 303 IN A 172.0.0.2"), test.A("hdls1.testns.svc.cluster.local. 5 IN A 172.0.0.2"),
test.A("hdls1.testns.svc.cluster.local. 303 IN A 172.0.0.3"), test.A("hdls1.testns.svc.cluster.local. 5 IN A 172.0.0.3"),
}, },
}, },
// SRV Service (Headless) // SRV Service (Headless)
@ -90,16 +90,16 @@ var dnsTestCases = []test.Case{
Qname: "_http._tcp.hdls1.testns.svc.cluster.local.", Qtype: dns.TypeSRV, Qname: "_http._tcp.hdls1.testns.svc.cluster.local.", Qtype: dns.TypeSRV,
Rcode: dns.RcodeSuccess, Rcode: dns.RcodeSuccess,
Answer: []dns.RR{ Answer: []dns.RR{
test.SRV("_http._tcp.hdls1.testns.svc.cluster.local. 303 IN SRV 0 25 80 172-0-0-2.hdls1.testns.svc.cluster.local."), test.SRV("_http._tcp.hdls1.testns.svc.cluster.local. 5 IN SRV 0 25 80 172-0-0-2.hdls1.testns.svc.cluster.local."),
test.SRV("_http._tcp.hdls1.testns.svc.cluster.local. 303 IN SRV 0 25 80 172-0-0-3.hdls1.testns.svc.cluster.local."), test.SRV("_http._tcp.hdls1.testns.svc.cluster.local. 5 IN SRV 0 25 80 172-0-0-3.hdls1.testns.svc.cluster.local."),
test.SRV("_http._tcp.hdls1.testns.svc.cluster.local. 303 IN SRV 0 25 80 5678-abcd--1.hdls1.testns.svc.cluster.local."), test.SRV("_http._tcp.hdls1.testns.svc.cluster.local. 5 IN SRV 0 25 80 5678-abcd--1.hdls1.testns.svc.cluster.local."),
test.SRV("_http._tcp.hdls1.testns.svc.cluster.local. 303 IN SRV 0 25 80 5678-abcd--2.hdls1.testns.svc.cluster.local."), test.SRV("_http._tcp.hdls1.testns.svc.cluster.local. 5 IN SRV 0 25 80 5678-abcd--2.hdls1.testns.svc.cluster.local."),
}, },
Extra: []dns.RR{ Extra: []dns.RR{
test.A("172-0-0-2.hdls1.testns.svc.cluster.local. 303 IN A 172.0.0.2"), test.A("172-0-0-2.hdls1.testns.svc.cluster.local. 5 IN A 172.0.0.2"),
test.A("172-0-0-3.hdls1.testns.svc.cluster.local. 303 IN A 172.0.0.3"), test.A("172-0-0-3.hdls1.testns.svc.cluster.local. 5 IN A 172.0.0.3"),
test.AAAA("5678-abcd--1.hdls1.testns.svc.cluster.local. 303 IN AAAA 5678:abcd::1"), test.AAAA("5678-abcd--1.hdls1.testns.svc.cluster.local. 5 IN AAAA 5678:abcd::1"),
test.AAAA("5678-abcd--2.hdls1.testns.svc.cluster.local. 303 IN AAAA 5678:abcd::2"), test.AAAA("5678-abcd--2.hdls1.testns.svc.cluster.local. 5 IN AAAA 5678:abcd::2"),
}, },
}, },
// CNAME External // CNAME External
@ -107,7 +107,7 @@ var dnsTestCases = []test.Case{
Qname: "external.testns.svc.cluster.local.", Qtype: dns.TypeCNAME, Qname: "external.testns.svc.cluster.local.", Qtype: dns.TypeCNAME,
Rcode: dns.RcodeSuccess, Rcode: dns.RcodeSuccess,
Answer: []dns.RR{ Answer: []dns.RR{
test.CNAME("external.testns.svc.cluster.local. 303 IN CNAME ext.interwebs.test."), test.CNAME("external.testns.svc.cluster.local. 5 IN CNAME ext.interwebs.test."),
}, },
}, },
// AAAA Service (with an existing A record, but no AAAA record) // AAAA Service (with an existing A record, but no AAAA record)
@ -171,8 +171,8 @@ var dnsTestCases = []test.Case{
Qname: "hdls1.testns.svc.cluster.local.", Qtype: dns.TypeAAAA, Qname: "hdls1.testns.svc.cluster.local.", Qtype: dns.TypeAAAA,
Rcode: dns.RcodeSuccess, Rcode: dns.RcodeSuccess,
Answer: []dns.RR{ Answer: []dns.RR{
test.AAAA("hdls1.testns.svc.cluster.local. 303 IN AAAA 5678:abcd::1"), test.AAAA("hdls1.testns.svc.cluster.local. 5 IN AAAA 5678:abcd::1"),
test.AAAA("hdls1.testns.svc.cluster.local. 303 IN AAAA 5678:abcd::2"), test.AAAA("hdls1.testns.svc.cluster.local. 5 IN AAAA 5678:abcd::2"),
}, },
}, },
// AAAA Endpoint // AAAA Endpoint
@ -180,7 +180,7 @@ var dnsTestCases = []test.Case{
Qname: "5678-abcd--1.hdls1.testns.svc.cluster.local.", Qtype: dns.TypeAAAA, Qname: "5678-abcd--1.hdls1.testns.svc.cluster.local.", Qtype: dns.TypeAAAA,
Rcode: dns.RcodeSuccess, Rcode: dns.RcodeSuccess,
Answer: []dns.RR{ Answer: []dns.RR{
test.AAAA("5678-abcd--1.hdls1.testns.svc.cluster.local. 303 IN AAAA 5678:abcd::1"), test.AAAA("5678-abcd--1.hdls1.testns.svc.cluster.local. 5 IN AAAA 5678:abcd::1"),
}, },
}, },
} }

View file

@ -26,22 +26,22 @@ func (k *Kubernetes) Reverse(state request.Request, exact bool, opt plugin.Optio
func (k *Kubernetes) serviceRecordForIP(ip, name string) []msg.Service { func (k *Kubernetes) serviceRecordForIP(ip, name string) []msg.Service {
// First check services with cluster ips // First check services with cluster ips
for _, service := range k.APIConn.SvcIndexReverse(ip) { for _, service := range k.APIConn.SvcIndexReverse(ip) {
if (len(k.Namespaces) > 0) && !k.namespaceExposed(service.Namespace) { if len(k.Namespaces) > 0 && !k.namespaceExposed(service.Namespace) {
continue continue
} }
domain := strings.Join([]string{service.Name, service.Namespace, Svc, k.primaryZone()}, ".") domain := strings.Join([]string{service.Name, service.Namespace, Svc, k.primaryZone()}, ".")
return []msg.Service{{Host: domain}} return []msg.Service{{Host: domain, TTL: k.ttl}}
} }
// If no cluster ips match, search endpoints // If no cluster ips match, search endpoints
for _, ep := range k.APIConn.EpIndexReverse(ip) { for _, ep := range k.APIConn.EpIndexReverse(ip) {
if (len(k.Namespaces) > 0) && !k.namespaceExposed(ep.ObjectMeta.Namespace) { if len(k.Namespaces) > 0 && !k.namespaceExposed(ep.ObjectMeta.Namespace) {
continue continue
} }
for _, eps := range ep.Subsets { for _, eps := range ep.Subsets {
for _, addr := range eps.Addresses { for _, addr := range eps.Addresses {
if addr.IP == ip { if addr.IP == ip {
domain := strings.Join([]string{endpointHostname(addr, k.endpointNameMode), ep.ObjectMeta.Name, ep.ObjectMeta.Namespace, Svc, k.primaryZone()}, ".") domain := strings.Join([]string{endpointHostname(addr, k.endpointNameMode), ep.ObjectMeta.Name, ep.ObjectMeta.Namespace, Svc, k.primaryZone()}, ".")
return []msg.Service{{Host: domain}} return []msg.Service{{Host: domain, TTL: k.ttl}}
} }
} }
} }

View file

@ -104,14 +104,14 @@ func TestReverse(t *testing.T) {
Qname: "100.0.0.10.in-addr.arpa.", Qtype: dns.TypePTR, Qname: "100.0.0.10.in-addr.arpa.", Qtype: dns.TypePTR,
Rcode: dns.RcodeSuccess, Rcode: dns.RcodeSuccess,
Answer: []dns.RR{ Answer: []dns.RR{
test.PTR("100.0.0.10.in-addr.arpa. 303 IN PTR ep1a.svc1.testns.svc.cluster.local."), test.PTR("100.0.0.10.in-addr.arpa. 5 IN PTR ep1a.svc1.testns.svc.cluster.local."),
}, },
}, },
{ {
Qname: "100.1.168.192.in-addr.arpa.", Qtype: dns.TypePTR, Qname: "100.1.168.192.in-addr.arpa.", Qtype: dns.TypePTR,
Rcode: dns.RcodeSuccess, Rcode: dns.RcodeSuccess,
Answer: []dns.RR{ Answer: []dns.RR{
test.PTR("100.1.168.192.in-addr.arpa. 303 IN PTR svc1.testns.svc.cluster.local."), test.PTR("100.1.168.192.in-addr.arpa. 5 IN PTR svc1.testns.svc.cluster.local."),
}, },
}, },
{ {