in internal/k8sCommon/k8sclient/endpointslicewatcher.go [116:186]
func (w *EndpointSliceWatcher) extractEndpointSliceKeyValuePairs(slice *discv1.EndpointSlice) []kvPair {
var pairs []kvPair
isFirstPod := true
svcName := slice.Labels["kubernetes.io/service-name"]
for _, endpoint := range slice.Endpoints {
if endpoint.TargetRef != nil {
if endpoint.TargetRef.Kind != "Pod" {
continue
}
podName := endpoint.TargetRef.Name
ns := endpoint.TargetRef.Namespace
var nodeName string
if endpoint.NodeName != nil {
nodeName = *endpoint.NodeName
}
w.logger.Debug("Processing endpoint",
zap.String("podName", podName),
zap.String("namespace", ns),
zap.String("nodeName", nodeName),
)
derivedWorkload := InferWorkloadName(podName, svcName)
if derivedWorkload == "" {
w.logger.Warn("failed to infer workload name from Pod name")
continue
}
fullWl := NewPodMetadata(derivedWorkload, ns, nodeName)
// Build IP and IP:port pairs
for _, addr := range endpoint.Addresses {
// "ip" -> PodMetadata
pairs = append(pairs, kvPair{
key: addr,
value: fullWl,
isService: false,
})
// "ip:port" -> PodMetadata for each port
for _, portDef := range slice.Ports {
if portDef.Port != nil {
ipPort := fmt.Sprintf("%s:%d", addr, *portDef.Port)
pairs = append(pairs, kvPair{
key: ipPort,
value: fullWl,
isService: false,
})
}
}
}
// Build service name -> PodMetadata pair from the first pod
if isFirstPod {
isFirstPod = false
if svcName != "" && ns != "" {
pairs = append(pairs, kvPair{
key: svcName + "@" + ns,
value: fullWl,
isService: true,
})
}
}
}
}
return pairs
}