mirror of
				https://github.com/coredns/coredns.git
				synced 2025-10-31 02:03:20 -04:00 
			
		
		
		
	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:
		| @@ -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"), | ||||||
| 		}, | 		}, | ||||||
| 	}, | 	}, | ||||||
| } | } | ||||||
|   | |||||||
| @@ -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}} | ||||||
| 				} | 				} | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
|   | |||||||
| @@ -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."), | ||||||
| 			}, | 			}, | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user