in pkg/k8s/service_utils.go [23:45]
func LookupListenPortFromPodSpec(svc *corev1.Service, pod *corev1.Pod, port intstr.IntOrString, protocol corev1.Protocol) (int32, error) {
containerPort, containerPortName, err := LookupContainerPortAndName(pod, port, protocol)
if err != nil {
return 0, err
}
for _, svcPort := range svc.Spec.Ports {
if svcPort.Protocol != protocol {
continue
}
switch svcPort.TargetPort.Type {
case intstr.String:
if containerPortName == svcPort.TargetPort.StrVal {
return svcPort.Port, nil
}
case intstr.Int:
if containerPort == svcPort.TargetPort.IntVal {
return svcPort.Port, nil
}
}
}
return 0, errors.Errorf("unable to find listener port for port %s on service %s", port.String(), NamespacedName(svc))
}