Add NS+hosts records to xfr response. Add coredns service to test data. (#4696)
Signed-off-by: Chris O'Haver <cohaver@infoblox.com>
This commit is contained in:
parent
0f061cc9f7
commit
a1aafbf405
3 changed files with 49 additions and 3 deletions
|
@ -568,6 +568,17 @@ func (APIConnServeTest) PodIndex(ip string) []*object.Pod {
|
||||||
}
|
}
|
||||||
|
|
||||||
var svcIndex = map[string][]*object.Service{
|
var svcIndex = map[string][]*object.Service{
|
||||||
|
"kubedns.kube-system": {
|
||||||
|
{
|
||||||
|
Name: "kubedns",
|
||||||
|
Namespace: "kube-system",
|
||||||
|
Type: api.ServiceTypeClusterIP,
|
||||||
|
ClusterIPs: []string{"10.0.0.10"},
|
||||||
|
Ports: []api.ServicePort{
|
||||||
|
{Name: "dns", Protocol: "udp", Port: 53},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
"svc1.testns": {
|
"svc1.testns": {
|
||||||
{
|
{
|
||||||
Name: "svc1",
|
Name: "svc1",
|
||||||
|
@ -673,6 +684,21 @@ func (APIConnServeTest) ServiceList() []*object.Service {
|
||||||
}
|
}
|
||||||
|
|
||||||
var epsIndex = map[string][]*object.Endpoints{
|
var epsIndex = map[string][]*object.Endpoints{
|
||||||
|
"kubedns.kube-system": {{
|
||||||
|
Subsets: []object.EndpointSubset{
|
||||||
|
{
|
||||||
|
Addresses: []object.EndpointAddress{
|
||||||
|
{IP: "172.0.0.100"},
|
||||||
|
},
|
||||||
|
Ports: []object.EndpointPort{
|
||||||
|
{Port: 53, Protocol: "udp", Name: "dns"},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Name: "kubedns",
|
||||||
|
Namespace: "kube-system",
|
||||||
|
Index: object.EndpointsKey("kubedns", "kube-system"),
|
||||||
|
}},
|
||||||
"svc1.testns": {{
|
"svc1.testns": {{
|
||||||
Subsets: []object.EndpointSubset{
|
Subsets: []object.EndpointSubset{
|
||||||
{
|
{
|
||||||
|
|
|
@ -38,6 +38,17 @@ func (k *Kubernetes) Transfer(zone string, serial uint32) (<-chan []dns.RR, erro
|
||||||
}
|
}
|
||||||
ch <- soa
|
ch <- soa
|
||||||
|
|
||||||
|
nsAddrs := k.nsAddrs(false, zone)
|
||||||
|
nsHosts := make(map[string]struct{})
|
||||||
|
for _, nsAddr := range nsAddrs {
|
||||||
|
nsHost := nsAddr.Header().Name
|
||||||
|
if _, ok := nsHosts[nsHost]; !ok {
|
||||||
|
nsHosts[nsHost] = struct{}{}
|
||||||
|
ch <- []dns.RR{&dns.NS{Hdr: dns.RR_Header{Name: zone, Rrtype: dns.TypeNS, Class: dns.ClassINET, Ttl: k.ttl}, Ns: nsHost}}
|
||||||
|
}
|
||||||
|
ch <- nsAddrs
|
||||||
|
}
|
||||||
|
|
||||||
sort.Slice(serviceList, func(i, j int) bool {
|
sort.Slice(serviceList, func(i, j int) bool {
|
||||||
return serviceList[i].Name < serviceList[j].Name
|
return serviceList[i].Name < serviceList[j].Name
|
||||||
})
|
})
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package kubernetes
|
package kubernetes
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"net"
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
@ -10,7 +11,8 @@ import (
|
||||||
func TestKubernetesAXFR(t *testing.T) {
|
func TestKubernetesAXFR(t *testing.T) {
|
||||||
k := New([]string{"cluster.local."})
|
k := New([]string{"cluster.local."})
|
||||||
k.APIConn = &APIConnServeTest{}
|
k.APIConn = &APIConnServeTest{}
|
||||||
k.Namespaces = map[string]struct{}{"testns": {}}
|
k.Namespaces = map[string]struct{}{"testns": {}, "kube-system": {}}
|
||||||
|
k.localIPs = []net.IP{net.ParseIP("10.0.0.10")}
|
||||||
|
|
||||||
dnsmsg := &dns.Msg{}
|
dnsmsg := &dns.Msg{}
|
||||||
dnsmsg.SetAxfr(k.Zones[0])
|
dnsmsg.SetAxfr(k.Zones[0])
|
||||||
|
@ -25,7 +27,8 @@ func TestKubernetesAXFR(t *testing.T) {
|
||||||
func TestKubernetesIXFRFallback(t *testing.T) {
|
func TestKubernetesIXFRFallback(t *testing.T) {
|
||||||
k := New([]string{"cluster.local."})
|
k := New([]string{"cluster.local."})
|
||||||
k.APIConn = &APIConnServeTest{}
|
k.APIConn = &APIConnServeTest{}
|
||||||
k.Namespaces = map[string]struct{}{"testns": {}}
|
k.Namespaces = map[string]struct{}{"testns": {}, "kube-system": {}}
|
||||||
|
k.localIPs = []net.IP{net.ParseIP("10.0.0.10")}
|
||||||
|
|
||||||
dnsmsg := &dns.Msg{}
|
dnsmsg := &dns.Msg{}
|
||||||
dnsmsg.SetAxfr(k.Zones[0])
|
dnsmsg.SetAxfr(k.Zones[0])
|
||||||
|
@ -40,7 +43,8 @@ func TestKubernetesIXFRFallback(t *testing.T) {
|
||||||
func TestKubernetesIXFRCurrent(t *testing.T) {
|
func TestKubernetesIXFRCurrent(t *testing.T) {
|
||||||
k := New([]string{"cluster.local."})
|
k := New([]string{"cluster.local."})
|
||||||
k.APIConn = &APIConnServeTest{}
|
k.APIConn = &APIConnServeTest{}
|
||||||
k.Namespaces = map[string]struct{}{"testns": {}}
|
k.Namespaces = map[string]struct{}{"testns": {}, "kube-system": {}}
|
||||||
|
k.localIPs = []net.IP{net.ParseIP("10.0.0.10")}
|
||||||
|
|
||||||
dnsmsg := &dns.Msg{}
|
dnsmsg := &dns.Msg{}
|
||||||
dnsmsg.SetAxfr(k.Zones[0])
|
dnsmsg.SetAxfr(k.Zones[0])
|
||||||
|
@ -91,6 +95,8 @@ func validateAXFR(t *testing.T, ch <-chan []dns.RR) {
|
||||||
|
|
||||||
const expectedZone = `
|
const expectedZone = `
|
||||||
cluster.local. 5 IN SOA ns.dns.cluster.local. hostmaster.cluster.local. 3 7200 1800 86400 5
|
cluster.local. 5 IN SOA ns.dns.cluster.local. hostmaster.cluster.local. 3 7200 1800 86400 5
|
||||||
|
cluster.local. 5 IN NS ns.dns.cluster.local.
|
||||||
|
ns.dns.cluster.local. 5 IN A 10.0.0.10
|
||||||
external.testns.svc.cluster.local. 5 IN CNAME ext.interwebs.test.
|
external.testns.svc.cluster.local. 5 IN CNAME ext.interwebs.test.
|
||||||
external-to-service.testns.svc.cluster.local. 5 IN CNAME svc1.testns.svc.cluster.local.
|
external-to-service.testns.svc.cluster.local. 5 IN CNAME svc1.testns.svc.cluster.local.
|
||||||
hdls1.testns.svc.cluster.local. 5 IN A 172.0.0.2
|
hdls1.testns.svc.cluster.local. 5 IN A 172.0.0.2
|
||||||
|
@ -113,6 +119,9 @@ hdls1.testns.svc.cluster.local. 5 IN AAAA 5678:abcd::2
|
||||||
_http._tcp.hdls1.testns.svc.cluster.local. 5 IN SRV 0 16 80 5678-abcd--2.hdls1.testns.svc.cluster.local.
|
_http._tcp.hdls1.testns.svc.cluster.local. 5 IN SRV 0 16 80 5678-abcd--2.hdls1.testns.svc.cluster.local.
|
||||||
hdlsprtls.testns.svc.cluster.local. 5 IN A 172.0.0.20
|
hdlsprtls.testns.svc.cluster.local. 5 IN A 172.0.0.20
|
||||||
172-0-0-20.hdlsprtls.testns.svc.cluster.local. 5 IN A 172.0.0.20
|
172-0-0-20.hdlsprtls.testns.svc.cluster.local. 5 IN A 172.0.0.20
|
||||||
|
kubedns.kube-system.svc.cluster.local. 5 IN A 10.0.0.10
|
||||||
|
kubedns.kube-system.svc.cluster.local. 5 IN SRV 0 100 53 kubedns.kube-system.svc.cluster.local.
|
||||||
|
_dns._udp.kubedns.kube-system.svc.cluster.local. 5 IN SRV 0 100 53 kubedns.kube-system.svc.cluster.local.
|
||||||
svc-dual-stack.testns.svc.cluster.local. 5 IN A 10.0.0.3
|
svc-dual-stack.testns.svc.cluster.local. 5 IN A 10.0.0.3
|
||||||
svc-dual-stack.testns.svc.cluster.local. 5 IN AAAA 10::3
|
svc-dual-stack.testns.svc.cluster.local. 5 IN AAAA 10::3
|
||||||
svc-dual-stack.testns.svc.cluster.local. 5 IN SRV 0 100 80 svc-dual-stack.testns.svc.cluster.local.
|
svc-dual-stack.testns.svc.cluster.local. 5 IN SRV 0 100 80 svc-dual-stack.testns.svc.cluster.local.
|
||||||
|
|
Loading…
Add table
Reference in a new issue