Add falg to report node internal IP address in ingress status
This commit is contained in:
parent
4479b54953
commit
284448f8d9
5 changed files with 34 additions and 20 deletions
|
|
@ -37,26 +37,30 @@ func ParseNameNS(input string) (string, string, error) {
|
|||
}
|
||||
|
||||
// GetNodeIP returns the IP address of a node in the cluster
|
||||
func GetNodeIP(kubeClient clientset.Interface, name string) string {
|
||||
var externalIP string
|
||||
func GetNodeIP(kubeClient clientset.Interface, name string, useInternalIP bool) string {
|
||||
node, err := kubeClient.Core().Nodes().Get(name, metav1.GetOptions{})
|
||||
if err != nil {
|
||||
return externalIP
|
||||
return ""
|
||||
}
|
||||
|
||||
for _, address := range node.Status.Addresses {
|
||||
if address.Type == apiv1.NodeExternalIP {
|
||||
if address.Address != "" {
|
||||
externalIP = address.Address
|
||||
break
|
||||
if useInternalIP {
|
||||
if address.Type == apiv1.NodeInternalIP {
|
||||
if address.Address != "" {
|
||||
return address.Address
|
||||
}
|
||||
}
|
||||
continue
|
||||
}
|
||||
|
||||
if externalIP == "" && address.Type == apiv1.NodeInternalIP {
|
||||
externalIP = address.Address
|
||||
if address.Type == apiv1.NodeExternalIP {
|
||||
if address.Address != "" {
|
||||
return address.Address
|
||||
}
|
||||
}
|
||||
}
|
||||
return externalIP
|
||||
|
||||
return ""
|
||||
}
|
||||
|
||||
// PodInfo contains runtime information about the pod running the Ingres controller
|
||||
|
|
@ -87,7 +91,7 @@ func GetPodDetails(kubeClient clientset.Interface) (*PodInfo, error) {
|
|||
return &PodInfo{
|
||||
Name: podName,
|
||||
Namespace: podNs,
|
||||
NodeIP: GetNodeIP(kubeClient, pod.Spec.NodeName),
|
||||
NodeIP: GetNodeIP(kubeClient, pod.Spec.NodeName, true),
|
||||
Labels: pod.GetLabels(),
|
||||
}, nil
|
||||
}
|
||||
|
|
|
|||
|
|
@ -61,9 +61,10 @@ func TestGetNodeIP(t *testing.T) {
|
|||
cs *testclient.Clientset
|
||||
n string
|
||||
ea string
|
||||
i bool
|
||||
}{
|
||||
// empty node list
|
||||
{testclient.NewSimpleClientset(), "demo", ""},
|
||||
{testclient.NewSimpleClientset(), "demo", "", true},
|
||||
|
||||
// node not exist
|
||||
{testclient.NewSimpleClientset(&apiv1.NodeList{Items: []apiv1.Node{{
|
||||
|
|
@ -78,7 +79,7 @@ func TestGetNodeIP(t *testing.T) {
|
|||
},
|
||||
},
|
||||
},
|
||||
}}}), "notexistnode", ""},
|
||||
}}}), "notexistnode", "", true},
|
||||
|
||||
// node exist
|
||||
{testclient.NewSimpleClientset(&apiv1.NodeList{Items: []apiv1.Node{{
|
||||
|
|
@ -93,7 +94,7 @@ func TestGetNodeIP(t *testing.T) {
|
|||
},
|
||||
},
|
||||
},
|
||||
}}}), "demo", "10.0.0.1"},
|
||||
}}}), "demo", "10.0.0.1", true},
|
||||
|
||||
// search the correct node
|
||||
{testclient.NewSimpleClientset(&apiv1.NodeList{Items: []apiv1.Node{
|
||||
|
|
@ -123,7 +124,7 @@ func TestGetNodeIP(t *testing.T) {
|
|||
},
|
||||
},
|
||||
},
|
||||
}}), "demo2", "10.0.0.2"},
|
||||
}}), "demo2", "10.0.0.2", true},
|
||||
|
||||
// get NodeExternalIP
|
||||
{testclient.NewSimpleClientset(&apiv1.NodeList{Items: []apiv1.Node{{
|
||||
|
|
@ -141,7 +142,7 @@ func TestGetNodeIP(t *testing.T) {
|
|||
},
|
||||
},
|
||||
},
|
||||
}}}), "demo", "10.0.0.2"},
|
||||
}}}), "demo", "10.0.0.2", false},
|
||||
|
||||
// get NodeInternalIP
|
||||
{testclient.NewSimpleClientset(&apiv1.NodeList{Items: []apiv1.Node{{
|
||||
|
|
@ -159,11 +160,11 @@ func TestGetNodeIP(t *testing.T) {
|
|||
},
|
||||
},
|
||||
},
|
||||
}}}), "demo", "10.0.0.2"},
|
||||
}}}), "demo", "10.0.0.2", true},
|
||||
}
|
||||
|
||||
for _, fk := range fKNodes {
|
||||
address := GetNodeIP(fk.cs, fk.n)
|
||||
address := GetNodeIP(fk.cs, fk.n, fk.i)
|
||||
if address != fk.ea {
|
||||
t.Errorf("expected %s, but returned %s", fk.ea, address)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue