Lua cluster specifier

In this example, we show how the Lua cluster specifier can be used with the Envoy proxy.

The example Envoy proxy configuration includes a Lua cluster specifier plugin that contains a function:

  • envoy_on_route(route_handle)

Tip

See the Lua cluster configuration documentation for an overview and documentation regarding the function.

Step 1: Build the sandbox

Change to the examples/lua-cluster-specifier directory, and bring up the composition.

$ pwd
envoy/examples/lua-cluster-specifier
$ docker compose pull
$ docker compose up --build -d
$ docker compose ps

Name                                  Command                        State   Ports
--------------------------------------------------------------------------------------------
lua-cluster-specifier-proxy-1         /docker-entrypoint.sh /usr ... Up      10000/tcp, 0.0.0.0:10000->10000/tcp

Step 2: Send a request to the normal service

The output from the curl command below should return 200, since the lua code select the normal service.

$ curl -i localhost:10000/anything 2>&1 |grep 200
HTTP/1.1 200 OK

Step 3: Send a request to the fake service

If you specify the request header header_key:fake, curl will return a 503 response, as the Lua code will select the fake service.

$ curl -i localhost:8000/anything -H "header_key:fake" 2>&1 |grep 503
HTTP/1.1 503 Service Unavailable

See also

Envoy Lua cluster specifier

Learn more about the Envoy Lua cluster specifier.

Lua

The Lua programming language.