Envoy proxy / service mesh
v0.1.20Envoy admin-API ops: cluster + listener + runtime + config + cert inventory, server info, logging level read/write, plus traffic-shifting mutators (drain listeners, healthcheck fail/ok, reset counters) for planned failovers and incident response. Default admin URL http://127.0.0.1:9901; override via ENVOY_ADMIN env.
curl
Install
emisar pack install
fetches this pack, re-validates it, and verifies its content hash against the
--hash
below — the exact bytes this page was rendered against, so a tampered copy is
rejected — before copying it into the runner's packs dir. The command reloads a
running daemon itself; no manual restart.
sudo emisar pack install envoy --hash sha256:95e91be868e0dca07edfb142c9d592712012fa3caaf918871ded1d2457402fe2
Setup
Operates on the local Envoy instance on the runner host via its admin endpoint (default 127.0.0.1:9901) — no credentials needed.
Environment
Set these on the runner host, then add each name to
execution.inherit_env
so the value reaches the action.
-
ENVOY_ADMINdefault http://127.0.0.1:9901Base URL of the Envoy admin endpoint every action talks to; set only if it is not on the default.
Notes
-
ENVOY_ADMINonly reaches an action when the runner allowlists it inexecution.inherit_env— the action env is scrubbed to PATH/LANG/LC_ALL/TERM by default. Unset, it falls back to http://127.0.0.1:9901, so an admin interface on another port or host silently reads the local one instead. - The admin endpoint must be enabled in the Envoy bootstrap (admin.address) for any action to work.
Verify it works
Runs envoy.ready, a low-risk
read that confirms the pack can reach its target. Run it on the host once the pack
is installed; pack install runs it for
you.
sudo emisar pack verify envoy
Install and configure a pack walks through the whole sequence on a host.
Actions 14 total
View on GitHub-
envoy.certs exec low Low — read-only or trivially reversible
GET /certs
List active TLS certs known to Envoy — subjects, expiry, days remaining.
View source on GitHub -
envoy.clusters exec low Low — read-only or trivially reversible
GET /clusters
List all clusters with endpoint health + stats. Use for "which upstream is unhealthy?".
View source on GitHub -
envoy.config_dump exec high High — service-affecting
GET /config_dump
Dump full xDS config — bootstrap, clusters, routes, listeners. This surfaces the entire effective config, which can carry secrets (TLS private keys / SDS material, upstream credentials, auth headers). The runner's redaction is a fail-closed backstop, not a guarantee — it is pattern-bound and can miss a bespoke secret whose name and value match no rule.
View source on GitHub -
envoy.drain_listeners exec high High — service-affecting
POST /drain_listeners
Mark all listeners as draining. Existing connections close on their own as requests complete; no new connections accepted on drained listeners. Use during a planned restart to drain traffic before flipping a load balancer.
View source on GitHub -
envoy.healthcheck_fail exec high High — service-affecting
POST /healthcheck/fail
Mark Envoy unhealthy via its admin API. External health checks see failure; load balancer pulls this instance out of rotation. Use during planned maintenance to drain traffic before a restart.
View source on GitHub -
envoy.healthcheck_ok exec medium Medium — changes state, easily reversible
POST /healthcheck/ok
Mark Envoy healthy again. Reverses healthcheck_fail. Load balancer starts sending traffic again on the next health check.
View source on GitHub -
envoy.listeners exec low Low — read-only or trivially reversible
GET /listeners
List all active listeners with bind address.
View source on GitHub -
envoy.logging_get exec low Low — read-only or trivially reversible
POST /logging
Show current per-component log levels.
View source on GitHub -
envoy.logging_set exec medium Medium — changes state, easily reversible
POST /logging?level=<level>
Set all components to one log level. Use "debug" for triage, then revert to "info".
View source on GitHub -
envoy.ready exec low Low — read-only or trivially reversible
GET /ready
Check readiness — 200 if Envoy is fully initialized; 503 otherwise.
View source on GitHub -
envoy.reset_counters exec medium Medium — changes state, easily reversible
POST /reset_counters
Reset all Envoy stat counters to zero. Use before isolating a specific test scenario or after diagnosing a noisy historical counter. Histograms and gauges unaffected.
View source on GitHub -
envoy.runtime exec low Low — read-only or trivially reversible
GET /runtime
Show runtime overrides (feature flags + numeric overrides).
View source on GitHub -
envoy.server_info exec low Low — read-only or trivially reversible
GET /server_info
Show Envoy version, uptime, hot-restart state, command-line.
View source on GitHub -
envoy.stats exec low Low — read-only or trivially reversible
GET /stats (filter)
Show Envoy stats matching a regex filter. Use 'cluster|listener|server' as a sane default.
View source on GitHub