From acd8048c6e91914a59dc3171017ff453bd09951e Mon Sep 17 00:00:00 2001 From: Emil Penchev Date: Fri, 21 Apr 2023 14:39:44 +0300 Subject: [PATCH] Introduce additional env vars. Added VKUBELET_EXTERNAL_POD_IP for adding a Node external IP information. Added VKUBELET_NODE_LABEL env variable for adding an additional custom Node label. Signed-off-by: Emil Penchev --- pkg/provider/helper.go | 9 +++++++++ pkg/provider/node.go | 6 ++++++ 2 files changed, 15 insertions(+) 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