mirror of
https://github.com/coredns/coredns.git
synced 2025-10-28 08:44:17 -04:00
plugin/k8s_external: fix external nsAddrs when CoreDNS Service has no External IPs (#4891)
fix external nsAddrs; add tests; Signed-off-by: Chris O'Haver <cohaver@infoblox.com>
This commit is contained in:
@@ -15,8 +15,9 @@ func isDefaultNS(name, zone string) bool {
|
||||
// it returns a record for the local address of the machine we're running on.
|
||||
func (k *Kubernetes) nsAddrs(external bool, zone string) []dns.RR {
|
||||
var (
|
||||
svcNames []string
|
||||
svcIPs []net.IP
|
||||
svcNames []string
|
||||
svcIPs []net.IP
|
||||
foundEndpoint bool
|
||||
)
|
||||
|
||||
// Find the CoreDNS Endpoints
|
||||
@@ -25,6 +26,7 @@ func (k *Kubernetes) nsAddrs(external bool, zone string) []dns.RR {
|
||||
|
||||
// Collect IPs for all Services of the Endpoints
|
||||
for _, endpoint := range endpoints {
|
||||
foundEndpoint = true
|
||||
svcs := k.APIConn.SvcIndex(endpoint.Index)
|
||||
for _, svc := range svcs {
|
||||
if external {
|
||||
@@ -54,8 +56,8 @@ func (k *Kubernetes) nsAddrs(external bool, zone string) []dns.RR {
|
||||
}
|
||||
}
|
||||
|
||||
// If no local IPs matched any endpoints, use the localIPs directly
|
||||
if len(svcIPs) == 0 {
|
||||
// If no CoreDNS endpoints were found, use the localIPs directly
|
||||
if !foundEndpoint {
|
||||
svcIPs = make([]net.IP, len(k.localIPs))
|
||||
svcNames = make([]string, len(k.localIPs))
|
||||
for i, localIP := range k.localIPs {
|
||||
|
||||
Reference in New Issue
Block a user