Learn Kubernetes 401 - Part 1 - Using Port Forward - Rafay Product Documentation

Part 1: Using Port-Forward

This is Part 1 of a multi-part, self-paced quick start exercise.

What Will You Do

In part 1, you will:

Estimated Time

Estimated time for this exercise is 5 minutes.

Using Port Forward

Kubectl port-forward is a tool that allows users to directly access pods without having to be exposed. There are times when application owners need to test or debug an application using their local environment. Port-forward allows you to create the network connection from your localhost to the pod's exposed service through the cluster's API server. This is very useful if hooking up a tool like jconsole and monitoring application metrics exposed with JMX.

Port Forward YAML file

Create a deployment using a YAML file, which is a configuration file. You could create a YAML file from the command line, but for this exercise, you can just use a text editor. Or you can download the service YAML file from this public Git repository

  1. Open the Terminal.
  2. Navigate to the Downloads folder.
   cd ./Downloads
  1. Use the following command to create an empty YAML file in your Downloads folder.
   touch port-forward.yaml
  1. Use the nano text editor in the Terminal.
   nano port-forward.yaml
  1. Copy and paste the configuration below into the text editor.
   apiVersion: apps/v1
   kind: Deployment
   metadata:
     labels:
       app: web
     name: nginx-deployment
   spec:
     replicas: 3
     selector:
       matchLabels:
         app: web
     template:
       metadata:
         labels:
           app: web
       spec:
         containers:
           - image: nginx
             imagePullPolicy: Always
             name: nginx
         restartPolicy: Always
  1. Press Cmd + X, then type Y and press Return to save the port-forward.yaml file.

  2. Open the command prompt.

  3. Navigate to the Downloads folder.

   cd ./Downloads
  1. Use the following command to create an empty YAML file in your Downloads folder.
   copy NUL port-forward.yaml
  1. Open the port-forward.yaml file with a text editor. For example, use Notepad++ to edit the YAML file.

  2. Copy and paste the configuration below into the text editor.

  3. Save the port-forward.yaml file.

  4. Open the Terminal.

  5. Navigate to the Downloads folder.

   cd ./Downloads
  1. Use the following command to create an empty YAML file in your Downloads folder.
   touch port-forward.yaml
  1. Use the nano text editor in the Terminal.
   nano port-forward.yaml
  1. Copy and paste the configuration below into the text editor.

  2. Press Ctrl + X, then type Y and press Enter to save the port-forward.yaml file.

Add the Deployment

  1. Download the cluster's kubeconfig from the Rafay console.
  2. Set your KUBECONFIG environment variable to your Rafay downloaded kubeconfig.
   export KUBECONFIG=/my-kubeconfig.yaml
  1. In the Terminal or Command Prompt, add the Deployment to your environment using a YAML file.
   kubectl apply -f port-forward.yaml
   
   deployment.apps/nginx-deployment created
  1. List the pods.
   kubectl get pods
   
   NAME                                READY   STATUS    RESTARTS   AGE
   nginx-deployment-76b56fd968-6q795   1/1     Running   0          35s
   nginx-deployment-76b56fd968-7k8t8   1/1     Running   0          35s
   nginx-deployment-76b56fd968-ntkvg   1/1     Running   0          35s
  1. Create a port-forward, we will be mapping our local 8080 to port 80 on the pod
   kubectl port-forward nginx-deployment-76b56fd968-6q795 8080:80
   
   Forwarding from 127.0.0.1:8080 -> 80
  1. Open a new terminal
  2. Test that the web page is available using the localhost port we set up. Example: curl http://127.0.0.1:8080. A Welcome to nginx! page should appear.
   curl http://127.0.0.1:8080
   
   <!DOCTYPE html>
   <html>
   <head>
   <title>Welcome to nginx!</title>
   <style>
   html { color-scheme: light dark; }
   body { width: 35em; margin: 0 auto;
   font-family: Tahoma, Verdana, Arial, sans-serif; }
   </style>
   </head>
   <body>
   <h1>Welcome to nginx!</h1>
   <p>If you see this page, the nginx web server is successfully installed and
   working. Further configuration is required.</p>
   <p>For online documentation and support please refer to
   <a href="http://nginx.org/">nginx.org</a>.<br/>
   Commercial support is available at
   <a href="http://nginx.com/">nginx.com</a>.</p>
   <p><em>Thank you for using nginx.</em></p>
   </body>
   </html>