This page takes you from an installed binary to a working proxy: one listener, one route, one cluster, with an echo server behind it. Use it as your first contact with Arion's configuration, or as a smoke test after installing.
Before you begin
- The
arionbinary — from the install page, it sits attarget/release/arion. - Docker, for the echo upstream (any HTTP server on
127.0.0.1:5678works instead). curl.
1. Start an echo upstream
docker run -d --rm --name echo -p 5678:5678 hashicorp/http-echo -text="hello from echo"
Confirm it answers before putting a proxy in front of it:
curl -s http://localhost:5678/hello from echo2. Write the configuration
Save this as arion.yaml. It is a complete config: a listener on port 8080 whose filter chain runs the HTTP connection manager, one route that sends everything to the echo cluster, and that cluster's single static endpoint.
envoy_bootstrap:
static_resources:
listeners:
- name: listener_http
address:
socket_address: { address: 0.0.0.0, port_value: 8080 }
filter_chains:
- name: http_chain
filters:
- name: http_gateway
typed_config:
"@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
http_filters:
- name: envoy.filters.http.router
typed_config:
"@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router
route_config:
name: quickstart_routes
virtual_hosts:
- name: all_hosts
domains: ["*"]
routes:
- match:
prefix: "/"
route:
cluster: echo
clusters:
- name: echo
type: STATIC
connect_timeout: 0.25s
load_assignment:
endpoints:
- lb_endpoints:
- endpoint:
address:
socket_address:
address: 127.0.0.1
port_value: 5678
Everything under envoy_bootstrap is standard Envoy static_resources. Two defaults keep the file short: the codec is auto-detected and the cluster load-balances round robin. One Arion particular: every filter chain must have a name.
3. Start Arion
Standalone
arion --config arion.yaml
Arion runs in the foreground. To use the Docker image instead, mount the config over the baked-in one — host networking lets the container reach the echo server on 127.0.0.1, though it does not work on all Docker setups:
docker run --rm --network host -v "$PWD/arion.yaml:/etc/arion/arion-runtime.yaml" arion-proxyKubernetes
Run the quickstart on one machine first; it assumes the echo server is on the proxy's localhost. On a cluster, put this arion.yaml into the ConfigMap from the install page (as the arion-runtime.yaml key) and point the cluster's endpoint at an echo Service's address instead of 127.0.0.1.
4. Send a request through the proxy
curl -i http://localhost:8080/HTTP/1.1 200 OK
...
hello from echo
The request entered the listener on 8080, passed the HTTP connection manager and the router, matched the / route, and was forwarded to the echo cluster's endpoint on 5678.
If you mistype a field, or use an Envoy feature Arion does not support, Arion refuses to start and the error names the offending field. It never silently ignores configuration — that is the compatibility promise.
When you are done, docker stop echo removes the upstream.
Next
- Build an L7 load balancer — the same shape with real backends, spread across endpoints.
- Routing — match on paths, headers and domains, and split traffic.
- The filter chain — where JWT, rate limiting and your own filters slot in.