aboutsummaryrefslogtreecommitdiff
path: root/plugin/kubernetes/ns_test.go
diff options
context:
space:
mode:
authorGravatar TomasKohout <tomas.kohout1995@gmail.com> 2022-08-30 20:59:27 +0200
committerGravatar GitHub <noreply@github.com> 2022-08-30 14:59:27 -0400
commit6782b7fb42efc979ab2649228a83c0ac20d50d5e (patch)
tree465f49c700aebcfb825227a3a45dfd38daace374 /plugin/kubernetes/ns_test.go
parentb218b56063a965dceeda2835b020f8672ba7e27a (diff)
downloadcoredns-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.go57
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