From e78be1fc350bd7e2b65e339a43a6f681454e8b4f Mon Sep 17 00:00:00 2001 From: Mike Bryant Date: Thu, 27 Apr 2017 11:43:07 +0100 Subject: [PATCH] fix(kube-peers): Add support for ExternalIP addresses Why: * In some environments Nodes have an ExternalIP but no InternalIP This change addresses the need by: * Falling back to ExternalIP addresses if there isn't an InternalIP for a node --- prog/kube-peers/main.go | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/prog/kube-peers/main.go b/prog/kube-peers/main.go index 977a4872..8320e626 100644 --- a/prog/kube-peers/main.go +++ b/prog/kube-peers/main.go @@ -35,11 +35,21 @@ func getKubePeers() ([]string, error) { } addresses := make([]string, 0, len(nodeList.Items)) for _, peer := range nodeList.Items { + var internalIP, externalIP string for _, addr := range peer.Status.Addresses { if addr.Type == "InternalIP" { - addresses = append(addresses, addr.Address) + internalIP = addr.Address + } else if addr.Type == "ExternalIP" { + externalIP = addr.Address } } + + // Fallback for cases where a Node has an ExternalIP but no InternalIP + if internalIP != "" { + addresses = append(addresses, internalIP) + } else if externalIP != "" { + addresses = append(addresses, externalIP) + } } return addresses, nil }