Static Upstreams

Let’s configure Gloo to route to a single, static Upstream. In this case, we’ll route requests through Gloo to the JSON testing API available at

This guide assumes that you have deployed Gloo to the gloo-system namespace and that the glooctl command line utility is installed on your machine. glooctl provides several convenient functions to view, manipulate, and debug Gloo resources; in particular, it is worth mentioning the following command, which we will use each time we need to retrieve the URL of the Gloo Gateway that is running inside your cluster:

glooctl proxy url

Create Upstream

Let’s create a simple upstream for testing called json-upstream, that routes to a static site:

kind: Upstream
  name: json-upstream
  namespace: gloo-system
      - addr:
        port: 80

glooctl create upstream static --static-hosts --name json-upstream

Create Virtual Service

Now let’s create a virtual service that routes all requests to the foo domain to that upstream.

kind: VirtualService
  name: test-static
  namespace: gloo-system
      - 'foo'
      - matchers:
         - prefix: /
              name: json-upstream
              namespace: gloo-system
          autoHostRewrite: true

Test routes

Now we can verify that the proxy was updated to support routing to this upstream using curl:

curl -H "Host: foo" $(glooctl proxy url)/posts
    "userId": 1,
    "id": 1,
    "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
    "body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
    "userId": 1,
    "id": 2,
    "title": "qui est esse",
    "body": "est rerum tempore vitae\nsequi sint nihil reprehenderit dolor beatae ea dolores neque\nfugiat blanditiis voluptate porro vel nihil molestiae ut reiciendis\nqui aperiam non debitis possimus qui neque nisi nulla"
    "userId": 1,
    "id": 3,
    "title": "ea molestias quasi exercitationem repellat qui ipsa sit aut",
    "body": "et iusto sed quo iure\nvoluptatem occaecati omnis eligendi aut ad\nvoluptatem doloribus vel accusantium quis pariatur\nmolestiae porro eius odio et labore et velit aut"


In this example, we created a static upstream and created a virtual service with a route to it. We showed using curl that the proxy was configured with this route.

Let’s cleanup the test upstream and virtual service we created:

kubectl delete vs -n gloo-system test-static
kubectl delete upstream -n gloo-system json-upstream

glooctl delete vs test-static
glooctl delete upstream json-upstream