Port-forwarding allows you to access your application on
localhost:[PORT] by forwarding the network traffic from a localhost port to a specified port of a container.
When starting the development mode, DevSpace starts port-forwarding as configured in the
dev.ports section of the
images: backend: image: john/devbackend backend-debugger: image: john/debugger deployments: - name: app-backend component: containers: - image: john/devbackend - image: john/debugger dev: ports: - imageName: backend forward: - port: 8080 remotePort: 80
Every port-forwarding configuration consists of two parts:
- Container Selection via
- Port Mapping via
portand optionally via
portoption must be unique across your entire
portssection, e.g. you can only use the value
8080once for the
portoption in your
The following config options are needed to determine the container to which the traffic should be forwarded.
You can set either
imageName. Both options can be combined with the optional
namespaceoption if needed.
imageName option expects a string with the name of an image from the
images section of the
imageName tells DevSpace to select the container based on the referenced image that was last built using DevSpace.
imageNameis not possible if multiple deployments use the same image that belongs to this
imagessection of the
You cannot use the
imageNameoption in combination with
Example: Select Container by Image
images: backend: image: john/devbackend backend-debugger: image: john/debugger deployments: - name: app-backend component: containers: - name: container-0 image: john/devbackend - name: container-1 image: john/debugger dev: ports: - imageName: backend forward: - port: 8080 remotePort: 80 - imageName: backend-debugger forward: - port: 3000
- The above example defines two images that can be used as
- The deployment starts two containers and each of them uses an image from the
imageNameoption of the first port-forwarding configuration in the
backend. That means DevSpace would select the first container for port-forwarding, as this container uses the
image: john/devbackendwhich belongs to the
backendimage as defined in the
imageNameoption of the second port-forwarding configuration in the
backend-debugger. That means DevSpace would select the second container for port-forwarding, as this container uses the
image: john/debuggerwhich belongs to the
backend-debuggerimage as defined in the
In consequence, the following port-forwarding processes would be started when using the above config example:
labelSelector option expects a key-value map of strings with Kubernetes labels.
You cannot use the
labelSelectoroption in combination with
Example: Select Container by Label
images: backend: image: john/devbackend backend-debugger: image: john/debugger deployments: - name: app-backend component: containers: - name: container-0 image: john/devbackend - name: container-1 image: john/debugger dev: ports: - labelSelector: app.kubernetes.io/name: devspace-app app.kubernetes.io/component: app-backend custom-label: custom-label-value forward: - port: 8080 remotePort: 80
labelSelectorwould select the pod created for the component deployment
- Because containers in the same pod share the same network stack, we do not need to specify which container should be selected.
namespace option expects a string with a Kubernetes namespace used to select the container from.
It is generally not needed to specify the
namespaceoption because by default, DevSpace uses the default namespace of your current kube-context which is usually the one that has been used to deploy your containers to.
forward section defines which localhost
port should be forwarded to the
remotePort of the selected container.
remotePortwill take the same value as
remotePortis not explicitly defined.
port option expects an integer from the range of user ports [1024 - 49151].
port< 1024 will likely to cause problems as these ports are reserved as system ports.
portoption is mandatory.
remotePort option expects an integer from the range of valid ports [0 - 65535].
remotePorthas the same value as
remotePortis not explictly defined.
bindAddress option expects a valid IP address that the local port should be bound to.
Default Value For
bindAddress: "0.0.0.0" # listen on all network interfaces
devspace add port
Use the convenience command
devspace add port [LOCAL_PORT]:[REMOTE_PORT] to tell DevSpace to forward traffic from your computer's
[LOCAL_PORT] to the
[REMOTE_PORT] of the default component of your application. If no
[REMOTE_PORT] is specified, DevSpace will assume that
[REMOTE_PORT]=[LOCAL_PORT]. Multiple port mappings can be specified as comma-separated list.
devspace add port 8080:80,3000
The example above would tell DevSpace to forward the local port
8080 to the container port
80 as well as to forward the local port
3000 to the remove container port
Local ports must be unique across all port forwarding configurations.