Create a Route with Kong Gateway Operator and Kong Ingress Controller

Uses: Kong Gateway Operator
TL;DR

Create a Service, then create an HTTPRoute.

Prerequisites

This page is part of the Deploy Kong Ingress Controller with Kong Gateway Operator series.

Complete the previous page, Create a Gateway before completing this page.

Configure the echo service

  1. In order to route a request using Kong Gateway we need a Service running in our cluster. Install an echo Service using the following command:

     kubectl apply -f https://developer.konghq.com/manifests/kic/echo-service.yaml -n kong
    
  2. Create an HTTPRoute to send any requests that start with /echo to the echo Service.

    echo '
    kind: HTTPRoute
    apiVersion: gateway.networking.k8s.io/v1
    metadata:
      name: echo
      namespace: kong
    spec:
      parentRefs:
        - group: gateway.networking.k8s.io
          kind: Gateway
          name: kong
      rules:
        - matches:
            - path:
                type: PathPrefix
                value: /echo
          backendRefs:
            - name: echo
              port: 1027
    ' | kubectl apply -f -
    

    The results should look like this:

    httproute.gateway.networking.k8s.io/echo created
    

Test the configuration

  1. Run kubectl get gateway kong -n default to get the IP address for the gateway and set that as the value for the variable PROXY_IP.

     export PROXY_IP=$(kubectl get gateway kong -n kong -o jsonpath='{.status.addresses[0].value}')
    

    Note: if your cluster can not provision LoadBalancer type Services then the IP you receive may only be routable from within the cluster.

  2. Make a call to the $PROXY_IP that you configured.

     curl "$PROXY_IP/echo"
    
     curl "$PROXY_IP/echo"
    
  3. You should see the following:

     Welcome, you are connected to node king.
     Running on Pod echo-965f7cf84-rm7wq.
     In namespace default.
     With IP address 192.168.194.10.
    
Something wrong?

Help us make these docs great!

Kong Developer docs are open source. If you find these useful and want to make them better, contribute today!