diff options
author | 2022-08-30 20:59:27 +0200 | |
---|---|---|
committer | 2022-08-30 14:59:27 -0400 | |
commit | 6782b7fb42efc979ab2649228a83c0ac20d50d5e (patch) | |
tree | 465f49c700aebcfb825227a3a45dfd38daace374 /plugin/kubernetes/ns_test.go | |
parent | b218b56063a965dceeda2835b020f8672ba7e27a (diff) | |
download | coredns-6782b7fb42efc979ab2649228a83c0ac20d50d5e.tar.gz coredns-6782b7fb42efc979ab2649228a83c0ac20d50d5e.tar.zst coredns-6782b7fb42efc979ab2649228a83c0ac20d50d5e.zip |
plugin/k8s_external: Resolve headless services (#5505)
*add option for resolving headless Services without external IPs in k8s_external
Signed-off-by: Tomas Kohout <tomas.kohout1995@gmail.com>
Diffstat (limited to 'plugin/kubernetes/ns_test.go')
-rw-r--r-- | plugin/kubernetes/ns_test.go | 57 |
1 files changed, 54 insertions, 3 deletions
diff --git a/plugin/kubernetes/ns_test.go b/plugin/kubernetes/ns_test.go index 3ad12cb29..82426a907 100644 --- a/plugin/kubernetes/ns_test.go +++ b/plugin/kubernetes/ns_test.go @@ -103,7 +103,7 @@ func TestNsAddrs(t *testing.T) { k.APIConn = &APIConnTest{} k.localIPs = []net.IP{net.ParseIP("10.244.0.20")} - cdrs := k.nsAddrs(false, k.Zones[0]) + cdrs := k.nsAddrs(false, false, k.Zones[0]) if len(cdrs) != 3 { t.Fatalf("Expected 3 results, got %v", len(cdrs)) @@ -137,13 +137,36 @@ func TestNsAddrs(t *testing.T) { } } +func TestNsAddrsExternalHeadless(t *testing.T) { + k := New([]string{"example.com."}) + k.APIConn = &APIConnTest{} + k.localIPs = []net.IP{net.ParseIP("10.244.0.20")} + + // there are only headless sevices + cdrs := k.nsAddrs(true, true, k.Zones[0]) + + if len(cdrs) != 1 { + t.Fatalf("Expected 0 results, got %v", cdrs) + } + + cdr := cdrs[0] + expected := "10.244.0.20" + if cdr.(*dns.A).A.String() != expected { + t.Errorf("Expected A address to be %q, got %q", expected, cdr.(*dns.A).A.String()) + } + expected = "10-244-0-20.hdls-dns-service.kube-system.example.com." + if cdr.Header().Name != expected { + t.Errorf("Expected record name to be %q, got %q", expected, cdr.Header().Name) + } +} + func TestNsAddrsExternal(t *testing.T) { k := New([]string{"example.com."}) k.APIConn = &APIConnTest{} k.localIPs = []net.IP{net.ParseIP("10.244.0.20")} // initially no services have an external IP ... - cdrs := k.nsAddrs(true, k.Zones[0]) + cdrs := k.nsAddrs(true, false, k.Zones[0]) if len(cdrs) != 0 { t.Fatalf("Expected 0 results, got %v", len(cdrs)) @@ -151,7 +174,7 @@ func TestNsAddrsExternal(t *testing.T) { // Add an external IP to one of the services ... svcs[0].ExternalIPs = []string{"1.2.3.4"} - cdrs = k.nsAddrs(true, k.Zones[0]) + cdrs = k.nsAddrs(true, false, k.Zones[0]) if len(cdrs) != 1 { t.Fatalf("Expected 1 results, got %v", len(cdrs)) @@ -166,3 +189,31 @@ func TestNsAddrsExternal(t *testing.T) { t.Errorf("Expected record name to be %q, got %q", expected, cdr.Header().Name) } } + +func TestNsAddrsExternalWithPreexistingExternalIP(t *testing.T) { + k := New([]string{"example.com."}) + k.APIConn = &APIConnTest{} + k.localIPs = []net.IP{net.ParseIP("10.244.0.20")} + + svcs[0].ExternalIPs = []string{"1.2.3.4"} + + // initially no services have an external IP ... + cdrs := k.nsAddrs(true, false, k.Zones[0]) + + if len(cdrs) != 1 { + t.Fatalf("Expected 1 results, got %v", len(cdrs)) + } + + if len(cdrs) != 1 { + t.Fatalf("Expected 1 results, got %v", len(cdrs)) + } + cdr := cdrs[0] + expected := "1.2.3.4" + if cdr.(*dns.A).A.String() != expected { + t.Errorf("Expected A address to be %q, got %q", expected, cdr.(*dns.A).A.String()) + } + expected = "dns-service.kube-system.example.com." + if cdr.Header().Name != expected { + t.Errorf("Expected record name to be %q, got %q", expected, cdr.Header().Name) + } +}
\ No newline at end of file |