Create an HTTP listener on your API Gateway. Then, your API Gateway listens for HTTP traffic on the specified port and hostname that you configure. This Gateway can be used as the main ingress for the apps in your cluster. You can also create multiple Gateways to listen for traffic on different ports and hostnames.

Next, you set up an HTTPRoute resource to route requests through the Gateway to backing services in your cluster. HTTPRoutes can refer to any gateway independent of the namespace they are in.

Before you begin

  1. Follow the Get started guide to install Gloo Gateway.

  2. Deploy a sample httpbin app.

  3. Decide whether to set up a listener inline on the Gateway resource or as a separate ListenerSet resource. For more information, see the Listener overview.

    ListenerSets: This feature is available with Gloo Gateway 2.x or later. Also, you must install the experimental channel of the Kubernetes Gateway API at version 1.3 or later.

Set up an HTTP listener

Set up an HTTP listener on your Gateway.

If you plan to set up your listener as part of a ListenerSet, keep the following considerations in mind. For more information, see ListenerSets (experimental).

  • This feature is available with Gloo Gateway 2.x or later.
  • You must install the experimental channel of the Kubernetes Gateway API at version 1.3 or later.
  1. Create a Gateway resource with an HTTP listener.

  2. Check the status of the Gateway to make sure that your configuration is accepted. Note that in the output, a NoConflicts status of False indicates that the Gateway is accepted and does not conflict with other Gateway configuration.

      kubectl get gateway my-http-gateway -n gloo-system -o yaml
      
  3. Create an HTTPRoute resource for the httpbin app that is served by the Gateway that you created.

  4. Verify that the HTTPRoute is applied successfully.

      kubectl get httproute/httpbin-mydomain -n httpbin -o yaml
      

    Example output: Notice in the status section that the parentRef is either the Gateway or the ListenerSet, depending on how you attached the HTTPRoute.

      ...
    status:
      parents:
      - conditions:
        - lastTransitionTime: "2025-04-29T20:48:51Z"
          message: ""
          observedGeneration: 3
          reason: Accepted
          status: "True"
          type: Accepted
        - lastTransitionTime: "2025-04-29T20:48:51Z"
          message: ""
          observedGeneration: 3
          reason: ResolvedRefs
          status: "True"
          type: ResolvedRefs
        controllerName: kgateway.dev/kgateway
      parentRef:
        group: gateway.networking.k8s.io
        kind: Gateway
        name: my-http-gateway
        namespace: gloo-system
      
  5. Verify that the listener now has a route attached.

  6. Get the external address of the gateway and save it in an environment variable.

  7. Send a request to the httpbin app and verify that you get back a 200 HTTP response code.

    Example output:

      * Mark bundle as not supporting multiuse
    < HTTP/1.1 200 OK
    HTTP/1.1 200 OK
    < access-control-allow-credentials: true
    access-control-allow-credentials: true
    < access-control-allow-origin: *
    access-control-allow-origin: *
    < date: Fri, 03 Nov 2023 20:02:48 GMT
    date: Fri, 03 Nov 2023 20:02:48 GMT
    < content-length: 0
    content-length: 0
    < x-envoy-upstream-service-time: 1
    x-envoy-upstream-service-time: 1
    < server: envoy
    server: envoy
      

Cleanup

You can remove the resources that you created in this guide.