diff --git a/pkg/provider/helper.go b/pkg/provider/helper.go index 9346ed9..16feb29 100644 --- a/pkg/provider/helper.go +++ b/pkg/provider/helper.go @@ -104,3 +104,12 @@ func podStopped(pod *corev1.Pod) bool { return (pod.Status.Phase == corev1.PodSucceeded || pod.Status.Phase == corev1.PodFailed) && pod.Spec. RestartPolicy == corev1.RestartPolicyNever } + +// nodeCustomLabel adds an additional node label. +// The label can be any customised meaningful label specified from user. +func nodeCustomLabel(node *corev1.Node, label string) { + nodelabel := strings.Split(label, ":") + if len(nodelabel) == 2 { + node.ObjectMeta.Labels[strings.TrimSpace(nodelabel[0])] = strings.TrimSpace(nodelabel[1]) + } +} diff --git a/pkg/provider/node.go b/pkg/provider/node.go index 5d10645..94b7fbd 100644 --- a/pkg/provider/node.go +++ b/pkg/provider/node.go @@ -62,7 +62,13 @@ func (v *VirtualK8S) ConfigureNode(ctx context.Context, node *corev1.Node) { node.ObjectMeta.Labels[corev1.LabelArchStable] = "amd64" node.ObjectMeta.Labels[corev1.LabelOSStable] = "linux" node.ObjectMeta.Labels[util.LabelOSBeta] = "linux" + if label := os.Getenv("VKUBELET_NODE_LABEL"); label != "" { + nodeCustomLabel(node, label) + } node.Status.Addresses = []corev1.NodeAddress{{Type: corev1.NodeInternalIP, Address: os.Getenv("VKUBELET_POD_IP")}} + if externalIP := os.Getenv("VKUBELET_EXTERNAL_POD_IP"); externalIP != "" { + node.Status.Addresses = append(node.Status.Addresses, corev1.NodeAddress{Type: corev1.NodeExternalIP, Address: externalIP}) + } node.Status.Conditions = nodeConditions() node.Status.DaemonEndpoints = v.nodeDaemonEndpoints() v.providerNode.Node = node