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:
parent
7263808fe1
commit
3fe9d41a21
2 changed files with 58 additions and 21 deletions
|
@ -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 {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue