diff --git a/middleware/kubernetes/setup.go b/middleware/kubernetes/setup.go index 2e531e859..e3a9093c3 100644 --- a/middleware/kubernetes/setup.go +++ b/middleware/kubernetes/setup.go @@ -76,7 +76,9 @@ func kubernetesParse(c *caddy.Controller) (*Kubernetes, error) { if len(zones) != 0 { k8s.Zones = zones - middleware.Zones(k8s.Zones).Normalize() + for i := 0; i < len(k8s.Zones); i++ { + k8s.Zones[i] = middleware.Host(k8s.Zones[i]).Normalize() + } } else { k8s.Zones = make([]string, len(c.ServerBlockKeys)) for i := 0; i < len(c.ServerBlockKeys); i++ { diff --git a/middleware/kubernetes/setup_reverse_test.go b/middleware/kubernetes/setup_reverse_test.go new file mode 100644 index 000000000..b6fa26b86 --- /dev/null +++ b/middleware/kubernetes/setup_reverse_test.go @@ -0,0 +1,35 @@ +package kubernetes + +import ( + "testing" + + "github.com/mholt/caddy" +) + +func TestKubernetesParseReverseZone(t *testing.T) { + tests := []struct { + input string // Corefile data as string + expectedZones []string // expected count of defined zones. + }{ + {`kubernetes coredns.local 10.0.0.0/16`, []string{"coredns.local.", "0.10.in-addr.arpa."}}, + {`kubernetes coredns.local 10.0.0.0/17`, []string{"coredns.local.", "10.0.0.0/17."}}, + } + + for i, tc := range tests { + c := caddy.NewTestController("dns", tc.input) + k, err := kubernetesParse(c) + if err != nil { + t.Fatalf("Test %d: Expected no error, got %q", err) + } + + zl := len(k.Zones) + if zl != len(tc.expectedZones) { + t.Errorf("Test %d: Expected kubernetes controller to be initialized with %d zones, found %d zones: '%v'", i, len(tc.expectedZones), zl) + } + for i, z := range tc.expectedZones { + if k.Zones[i] != z { + t.Errorf("Test %d: Expected zones to be %q, got %q", i, z, k.Zones[i]) + } + } + } +}