Skip to content

Run an echo upstream, write a thirty-line arion.yaml, start Arion and proxy your first request — about five minutes end to end.

Deployment

Switches every configuration variant on this page.

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 arion binary — from the install page, it sits at target/release/arion.
  • Docker, for the echo upstream (any HTTP server on 127.0.0.1:5678 works 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 echo

2. 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-proxy

Kubernetes

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

Continue

Start typing to search the site.

↑ ↓ to move Enter to open Esc to close