plugin/k8s_external: implement zone transfers (#4977)

Implement transfer for k8s_external. Notifies not supported.

Signed-off-by: Chris O'Haver <cohaver@infoblox.com>
This commit is contained in:
Chris O'Haver
2022-03-07 12:16:24 -05:00
committed by GitHub
parent 267ce8a820
commit 7263808fe1
17 changed files with 493 additions and 30 deletions

View File

@@ -29,9 +29,13 @@ type Externaler interface {
External(request.Request) ([]msg.Service, int)
// ExternalAddress should return a string slice of addresses for the nameserving endpoint.
ExternalAddress(state request.Request) []dns.RR
// ExternalServices returns all services in the given zone as a slice of msg.Service.
ExternalServices(zone string) []msg.Service
// ExternalSerial gets the current serial.
ExternalSerial(string) uint32
}
// External resolves Ingress and Loadbalance IPs from kubernetes clusters.
// External serves records for External IPs and Loadbalance IPs of Services in Kubernetes clusters.
type External struct {
Next plugin.Handler
Zones []string
@@ -42,8 +46,10 @@ type External struct {
upstream *upstream.Upstream
externalFunc func(request.Request) ([]msg.Service, int)
externalAddrFunc func(request.Request) []dns.RR
externalFunc func(request.Request) ([]msg.Service, int)
externalAddrFunc func(request.Request) []dns.RR
externalSerialFunc func(string) uint32
externalServicesFunc func(string) []msg.Service
}
// New returns a new and initialized *External.