diff --git a/staging/src/k8s.io/kubectl/pkg/cmd/portforward/portforward.go b/staging/src/k8s.io/kubectl/pkg/cmd/portforward/portforward.go index dc900f611f6..4a3aec82819 100644 --- a/staging/src/k8s.io/kubectl/pkg/cmd/portforward/portforward.go +++ b/staging/src/k8s.io/kubectl/pkg/cmd/portforward/portforward.go @@ -184,10 +184,10 @@ func translateServicePortToTargetPort(ports []string, svc corev1.Service, pod co return nil, err } - if int32(portnum) != containerPort { + if int32(portnum) != containerPort || localPort == "" { translated = append(translated, fmt.Sprintf("%s:%d", localPort, containerPort)) } else { - translated = append(translated, port) + translated = append(translated, fmt.Sprintf("%d", containerPort)) } } return translated, nil diff --git a/staging/src/k8s.io/kubectl/pkg/cmd/portforward/portforward_test.go b/staging/src/k8s.io/kubectl/pkg/cmd/portforward/portforward_test.go index 321639b5f97..06fa258c28c 100644 --- a/staging/src/k8s.io/kubectl/pkg/cmd/portforward/portforward_test.go +++ b/staging/src/k8s.io/kubectl/pkg/cmd/portforward/portforward_test.go @@ -413,6 +413,36 @@ func TestTranslateServicePortToTargetPort(t *testing.T) { translated: []string{":8080", ":8443"}, err: false, }, + { + name: "test success 4 (named service port and named pod container port)", + svc: corev1.Service{ + Spec: corev1.ServiceSpec{ + Ports: []corev1.ServicePort{ + { + Port: 80, + Name: "http", + TargetPort: intstr.FromString("http"), + }, + }, + }, + }, + pod: corev1.Pod{ + Spec: corev1.PodSpec{ + Containers: []corev1.Container{ + { + Ports: []corev1.ContainerPort{ + { + Name: "http", + ContainerPort: int32(80)}, + }, + }, + }, + }, + }, + ports: []string{"http"}, + translated: []string{"80"}, + err: false, + }, { name: "test success (targetPort omitted)", svc: corev1.Service{