Port Forwarding
In the context of developing applications on Kubernetes, it is often useful to quickly access a service from your local environment without exposing it using, for example, a load balancer or an ingress resource. In these situations, you can use port forwarding.
Let’s create an application consisting of a deployment and a service named simpleservice
, serving on port 80
:
$ kubectl apply -f https://github.com/openshift-evangelists/kbe/raw/main/specs/pf/app.yaml
Let’s say we want to access the simpleservice
service from the local environment on port 8080
.
Traffic can be forwarded to your local system using the port-forward
subcommand:
$ kubectl port-forward service/simpleservice 8080:80
This command does not immediately complete; as long as it is running, the port forward will be in use.
We can verify the service is accessible by accessing it over port 8080
(you’ll need a separate terminal):
Now we can invoke the service locally like so (using a separate terminal session):
$ curl -s localhost:8080/info
The output should resemble the following:
{"host": "localhost:8080", "version": "0.5.0", "from": "127.0.0.1"}
Remember that port forwarding is not meant for production traffic, but for development and experimentation.
Disconnect the port forward by pressing CTRL+C
in the terminal it’s running in.
The application can be cleaned up using the following:
$ kubectl delete service/simpleservice deployment/sise-deploy