func LookupListenPortFromPodSpec()

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))
}