diff --git a/perforator/agent/collector/pkg/deploy_system/kubelet/kubelet.go b/perforator/agent/collector/pkg/deploy_system/kubelet/kubelet.go index 48dc9b1d..0a6b0740 100644 --- a/perforator/agent/collector/pkg/deploy_system/kubelet/kubelet.go +++ b/perforator/agent/collector/pkg/deploy_system/kubelet/kubelet.go @@ -25,6 +25,7 @@ const ( tokenPath = "/var/run/secrets/kubernetes.io/serviceaccount/token" kubeletPort = "10250" nodeEnv = "NODE_NAME" + nodeIP = "NODE_IP" kubernetesAPIServerHost = "kubernetes.default.svc.cluster.local" @@ -47,11 +48,22 @@ func getNodeName() (string, error) { } func getNodeURL() (string, error) { - name, err := getNodeName() - if err != nil { - return "", fmt.Errorf("can't get node url %w", err) + var host string + ip := os.Getenv(nodeIP) + if ip != "" { + if strings.Contains(ip, ":") { + // ipv6 address + ip = fmt.Sprintf("[%s]", ip) + } + host = ip + } else { + name, err := getNodeName() + if err != nil { + return "", fmt.Errorf("can't get node url %w", err) + } + host = name } - url := fmt.Sprintf("https://%s:%s", name, kubeletPort) + url := fmt.Sprintf("https://%s:%s", host, kubeletPort) return url, nil } diff --git a/perforator/deploy/kubernetes/helm/perforator/templates/agent/daemonset.yaml b/perforator/deploy/kubernetes/helm/perforator/templates/agent/daemonset.yaml index 31821b1c..d605a6bc 100644 --- a/perforator/deploy/kubernetes/helm/perforator/templates/agent/daemonset.yaml +++ b/perforator/deploy/kubernetes/helm/perforator/templates/agent/daemonset.yaml @@ -50,10 +50,14 @@ spec: - {{ . }} {{- end}} env: - - name: NODE_NAME - valueFrom: - fieldRef: - fieldPath: spec.nodeName + - name: NODE_NAME + valueFrom: + fieldRef: + fieldPath: spec.nodeName + - name: NODE_IP + valueFrom: + fieldRef: + fieldPath: status.hostIP {{- range .Values.agent.extraEnv }} - name: {{ .name }} value: {{ .value }}