1
0
Fork 0
mirror of https://github.com/kubernetes-sigs/node-feature-discovery.git synced 2025-03-05 08:17:04 +00:00

topology-updater: properly handle IPv6 from NODE_ADDRESS

Fix the usage of IPv6 addresses for default kubelet configz endpoint.

The default host:port we use for kubelet configz endpoint is
${NODE_ADDRESS}:10250. Previously we errored out if NODE_ADDRESS was an
IPv6 address because we used an incorrect notation (without brackets).
The (IPv6) needs to be enclosed in brackets if specifying the port.
This commit is contained in:
Markus Lehtonen 2024-05-30 14:27:53 +03:00 committed by k8s-infra-cherrypick-robot
parent 089509a034
commit d2294412b1

View file

@ -19,8 +19,10 @@ package main
import (
"flag"
"fmt"
"net"
"os"
"path"
"strings"
"time"
"k8s.io/klog/v2"
@ -89,6 +91,10 @@ func parseArgs(flags *flag.FlagSet, osArgs ...string) (*topology.Args, *resource
"please either define the NODE_ADDRESS environment variable or specify endpoint with the -kubelet-config-uri flag\n", kubeletSecurePort)
os.Exit(1)
}
if isIPv6(nodeAddress) {
// With IPv6 we need to wrap the IP address in brackets as we append :port below
nodeAddress = "[" + nodeAddress + "]"
}
resourcemonitorArgs.KubeletConfigURI = fmt.Sprintf("https://%s:%d/configz", nodeAddress, kubeletSecurePort)
}
@ -126,3 +132,8 @@ func initFlags(flagset *flag.FlagSet) (*topology.Args, *resourcemonitor.Args) {
return args, resourcemonitorArgs
}
func isIPv6(addr string) bool {
ip := net.ParseIP(addr)
return ip != nil && strings.Count(ip.String(), ":") >= 2
}