Skip to content

Commit

Permalink
Merge pull request #89401 from liggitt/fix_kubectl_explicit_local_por…
Browse files Browse the repository at this point in the history
…t_for_service

Fix kubectl explicit local port for service
  • Loading branch information
k8s-ci-robot committed Mar 24, 2020
2 parents 07a7c49 + dfeb617 commit 11277d4
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 3 deletions.
9 changes: 6 additions & 3 deletions staging/src/k8s.io/kubectl/pkg/cmd/portforward/portforward.go
Expand Up @@ -185,10 +185,13 @@ func translateServicePortToTargetPort(ports []string, svc corev1.Service, pod co
return nil, err
}

if int32(portnum) != containerPort || localPort == "" {
translated = append(translated, fmt.Sprintf("%s:%d", localPort, containerPort))
// convert the resolved target port back to a string
remotePort = strconv.Itoa(int(containerPort))

if localPort != remotePort {
translated = append(translated, fmt.Sprintf("%s:%s", localPort, remotePort))
} else {
translated = append(translated, fmt.Sprintf("%d", containerPort))
translated = append(translated, remotePort)
}
}
return translated, nil
Expand Down
29 changes: 29 additions & 0 deletions staging/src/k8s.io/kubectl/pkg/cmd/portforward/portforward_test.go
Expand Up @@ -209,6 +209,35 @@ func TestTranslateServicePortToTargetPort(t *testing.T) {
translated: []string{":8080"},
err: false,
},
{
name: "test success 1 (int port with explicit local port)",
svc: corev1.Service{
Spec: corev1.ServiceSpec{
Ports: []corev1.ServicePort{
{
Port: 8080,
TargetPort: intstr.FromInt(8080),
},
},
},
},
pod: corev1.Pod{
Spec: corev1.PodSpec{
Containers: []corev1.Container{
{
Ports: []corev1.ContainerPort{
{
Name: "http",
ContainerPort: int32(8080)},
},
},
},
},
},
ports: []string{"8000:8080"},
translated: []string{"8000:8080"},
err: false,
},
{
name: "test success 2 (clusterIP: None)",
svc: corev1.Service{
Expand Down

0 comments on commit 11277d4

Please sign in to comment.