Add etcd middleware

This middleware acts in the same way as SkyDNS. We might add options
to allow it to be behave different, but for now it will suffice.

A Corefile like:
.:1053 {
    etcd miek.nl
    proxy . 8.8.8.8:53
}
will perform lookup in etcd and proxy everything not miek.nl to Google
for further resolution.

The internal etcd forwarding *also* uses the proxy infrastructure,
meaning you get health check and such for (almost) free
This commit is contained in:
Miek Gieben
2016-03-20 17:44:58 +00:00
parent 15518b5b6f
commit 8f9f2cd1ab
19 changed files with 1575 additions and 8 deletions

View File

@@ -0,0 +1,13 @@
package etcd
import "testing"
func TestPath(t *testing.T) {
for _, path := range []string{"mydns", "skydns"} {
e := Etcd{PathPrefix: path}
result := e.Path("service.staging.skydns.local.")
if result != "/"+path+"/local/skydns/staging/service" {
t.Errorf("Failure to get domain's path with prefix: %s", result)
}
}
}