package module
Version: v1.0.4 Latest Latest

This package is not in the latest version of its module.

Go to latest
Published: Oct 2, 2020 License: Apache-2.0 Imports: 16 Imported by: 0


A Go library for creating port forwards into pods running in a Kubernetes cluster.

build status

This code is heavily inspired by the implementations in kubectl, fission, and helm:

See godoc.org for full documentation.


A minimal example which will forward to the

package main

import (
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"

func main() {
	pf, err := portforward.NewPortForwarder("default", metav1.LabelSelector{
		MatchLabels: map[string]string{
			"app": "nginx",
	}, 80)
	if err != nil {
		log.Fatal("Error setting up port forwarder: ", err)

	err = pf.Start()
	if err != nil {
		log.Fatal("Error starting port forward: ", err)

	log.Printf("Started tunnel on %d\n", pf.ListenPort)
	time.Sleep(60 * time.Second)

Also see cmd/main.go.


By default, it will load a Kubernetes configuration file from ~/.kube/config or $KUBECONFIG.

It is possible to provide your own Kubernetes client by instantiating the PortForward struct directly instead of calling the NewPortForwarder method.




This section is empty.


This section is empty.


This section is empty.


type PortForward

type PortForward struct {
	// The parsed Kubernetes configuration file.
	Config *rest.Config
	// The initialized Kubernetes client.
	Clientset kubernetes.Interface
	// The pod name to use, required if Labels is empty.
	Name string
	// The labels to use to find the pod.
	Labels metav1.LabelSelector
	// The port on the pod to forward traffic to.
	DestinationPort int
	// The port that the port forward should listen to, random if not set.
	ListenPort int
	// The namespace to look for the pod in.
	Namespace string
	// contains filtered or unexported fields

Used for creating a port forward into a Kubernetes pod in a Kubernetes cluster.

func NewPortForwarder

func NewPortForwarder(namespace string, labels metav1.LabelSelector, port int) (*PortForward, error)

Initialize a port forwarder, loads the Kubernetes configuration file and creates the client. You do not need to use this function if you have a client to use already - the PortForward struct can be created directly.

func (*PortForward) Start

func (p *PortForward) Start(ctx context.Context) error

Start a port forward to a pod - blocks until the tunnel is ready for use.

func (*PortForward) Stop

func (p *PortForward) Stop()

Stop a port forward.

Source Files


Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
t or T : Toggle theme light dark auto
y or Y : Canonical URL