diff options
author | 2023-03-24 20:52:44 +0800 | |
---|---|---|
committer | 2023-03-24 08:52:44 -0400 | |
commit | 47dceabfc6465ba6c5d41472d6602d4ad5c9fb1b (patch) | |
tree | fd93da074caa38ae954a8d8bacd241aefc401124 /plugin/k8s_external/setup.go | |
parent | 48c40ae1cd4e0c0a2b6aaf0141c7111822ac7cd3 (diff) | |
download | coredns-47dceabfc6465ba6c5d41472d6602d4ad5c9fb1b.tar.gz coredns-47dceabfc6465ba6c5d41472d6602d4ad5c9fb1b.tar.zst coredns-47dceabfc6465ba6c5d41472d6602d4ad5c9fb1b.zip |
plugin/k8s_extenral: Supports fallthrough option (#5959)
* Add fallthrough option to k8s_external plugin to allow transitioning control to the next plugin if the domain is not found
* Exit on start up if required plugin is not present.
Signed-off-by: vanceli <vanceli@tencent.com>
---------
Signed-off-by: vanceli <vanceli@tencent.com>
Co-authored-by: vanceli <vanceli@tencent.com>
Diffstat (limited to 'plugin/k8s_external/setup.go')
-rw-r--r-- | plugin/k8s_external/setup.go | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/plugin/k8s_external/setup.go b/plugin/k8s_external/setup.go index dbb1372e5..f42f7de23 100644 --- a/plugin/k8s_external/setup.go +++ b/plugin/k8s_external/setup.go @@ -1,6 +1,7 @@ package external import ( + "errors" "strconv" "github.com/coredns/caddy" @@ -9,7 +10,9 @@ import ( "github.com/coredns/coredns/plugin/pkg/upstream" ) -func init() { plugin.Register("k8s_external", setup) } +const pluginName = "k8s_external" + +func init() { plugin.Register(pluginName, setup) } func setup(c *caddy.Controller) error { e, err := parse(c) @@ -21,14 +24,18 @@ func setup(c *caddy.Controller) error { c.OnStartup(func() error { m := dnsserver.GetConfig(c).Handler("kubernetes") if m == nil { - return nil + return plugin.Error(pluginName, errors.New("kubernetes plugin not loaded")) } - if x, ok := m.(Externaler); ok { - e.externalFunc = x.External - e.externalAddrFunc = x.ExternalAddress - e.externalServicesFunc = x.ExternalServices - e.externalSerialFunc = x.ExternalSerial + + x, ok := m.(Externaler) + if !ok { + return plugin.Error(pluginName, errors.New("kubernetes plugin does not implement the Externaler interface")) } + + e.externalFunc = x.External + e.externalAddrFunc = x.ExternalAddress + e.externalServicesFunc = x.ExternalServices + e.externalSerialFunc = x.ExternalSerial return nil }) @@ -70,6 +77,8 @@ func parse(c *caddy.Controller) (*External, error) { e.apex = args[0] case "headless": e.headless = true + case "fallthrough": + e.Fall.SetZonesFromArgs(c.RemainingArgs()) default: return nil, c.Errf("unknown property '%s'", c.Val()) } |