This page is the operator quick-reference for common production changes and high-signal failure scenarios.
Before You Touch Production
Confirm all of the following:
- rollback target is known
- binary rollback path is known
- you know whether the change is runtime-managed, cert-only, or restart-required
- Control API, metrics, and logs are reachable from the operator path
- a traffic-reduction or instance-removal plan is ready
Standard Change Workflows
Runtime-managed config change
Use this for routes, upstreams, backends, timeouts, resilience, quota, and similar live-reloadable runtime domains.
- Render the candidate config.
POST /admin/runtime/validatePOST /admin/runtime/previewPOST /admin/runtime/activate- Verify the active generation and runtime history.
- Watch latency, backend health, overload, quota, and auth outcomes before expanding rollout.
Certificate-only change
- Write new cert material with correct permissions.
- Verify expiry and SAN coverage.
POST /admin/runtime/reload-certs- Confirm new handshakes present the new certificate.
- Keep the previous cert material until verification is complete.
Restart-required change or binary upgrade
- Remove or drain one node from traffic.
- Apply the change or replace the binary.
- Restart the node.
- Verify health, readiness, metrics, and key dashboards.
- Reintroduce the node only after it is stable.
- Repeat node by node or slice by slice.
Scenario: Rising 503 Rate
Check:
spooky_overload_shed_by_reason_total- quota backend health and quota outcome series
- route latency and backend timeout signals
- active connections and inflight pressure
- recent config, backend, or deploy changes
Likely causes:
- overload self-protection
- backend timeout surge
- temporary backend unavailability
- fail-closed quota backend failure
Immediate actions:
- Decide whether the 503s are overload, quota-backend, or upstream-failure related.
- Reduce demand or remove non-critical traffic first.
- Verify backend health and recent latency changes.
- Roll back the most recent risky change if the spike correlates strongly with it.
Scenario: Rising 429 Rate
Check:
- quota policy outcome metrics
- matched policy identifiers
- quota backend health
- recent traffic-shape changes by tenant, token, client, or route
Interpretation:
- this is contract enforcement, not overload
- do not widen inflight or brownout settings to fix a quota-contract problem
Immediate actions:
- Confirm the affected selector dimensions.
- Confirm whether burst or sustained windows are being exhausted.
- Verify whether the rise is expected traffic growth, abuse, or mis-sized quota policy.
Scenario: Handshake Failures Or Client Connection Failures
Check:
- downstream TLS and handshake metrics
- certificate-expiry and certificate-selection signals
- ALPN-related behavior
- listener certificate paths and permissions
Likely causes:
- expired or wrong certificate material
- wrong hostname coverage
- missing client certificate where required
- client protocol mismatch
Immediate actions:
- Verify the listener presents the expected certificate.
- Determine whether the failures are isolated to one listener or hostname.
- If only cert material changed, use cert reload.
- If the issue involves listener bind or startup-owned changes, use the restart path.
Scenario: Backend Timeout Surge
Check:
- route latency percentiles
- backend timeout counters
- backend health transitions
- per-upstream and per-backend inflight pressure
Likely causes:
- unhealthy backend pool
- backend latency regression
- network or TLS establishment issues
- too much concurrency against a weak backend tier
Immediate actions:
- Confirm whether the issue is local to one upstream or broad.
- Remove or isolate obviously failing backends if health signals are clear.
- Reduce concurrency pressure if the proxy is amplifying backend collapse.
- Roll back recent backend or network changes before widening limits.
Scenario: Control API Or Metrics Endpoint Unavailable
Check:
- bind address and port settings
- local firewall rules
- startup logs
- whether the endpoints are required in the config
Immediate actions:
- Determine whether the data plane is healthy but the admin plane is down.
- If the admin surface is required and failed to bind, treat that as intentional startup protection.
- If the admin surface is optional and unavailable, decide whether to restart into a safer posture.
Scenario: JWT Rejections Or Stale JWKS State
Find out whether the problem is the tokens or the key source:
- Read
GET /admin/runtimeand inspect the JWT and JWKS state. - Check cache freshness and refresh timestamps.
- Read the dominant JWT validation failure reasons.
- Confirm whether the issue is a rotated
kid, stale JWKS state, issuer mismatch, or token expiry.
What common reasons usually mean:
| Reason | Meaning |
|---|---|
key_source_unavailable |
no usable verification key source |
missing_verification_key |
token kid not present in the cached key set |
algorithm_not_allowed |
token algorithm not allowed by config |
issuer_mismatch or audience_mismatch |
token valid for some other audience or issuer |
token_expired |
normal token expiry |
Recovery:
- wait one refresh interval if an issuer rotated early
- verify HTTPS reachability to the JWKS endpoint from the proxy host
- treat
empty_unusableas an auth outage for that upstream - avoid relying on restart as the primary fix for an upstream issuer outage
Scenario: Brownout Or Overload Triggering
Check:
- overload shed counters by reason
- brownout activation state
- active connections
- inflight pressure versus configured caps
Actions:
- Confirm whether self-protection is behaving correctly.
- Preserve core traffic first.
- Reduce demand or add backend capacity before simply widening limits.
- Avoid increasing caps blindly without memory and tail-latency validation.
Scenario: Drain For Deploy Or Maintenance
- Stop routing new traffic to the node if your traffic manager supports it.
- Use the drain-aware restart workflow.
- Watch drain progress and readiness.
- Use the configured forced-drain timeout only as a safety boundary.
If drain repeatedly times out:
- inspect long-lived streams
- inspect shutdown drain timeout
- inspect watchdog drain-grace configuration
- inspect whether traffic removal from the upstream load balancer is happening soon enough
After Any Incident
Record:
- the first signal that surfaced the issue
- whether the proxy was the root cause or a reflector of backend failure
- what changed immediately beforehand
- whether the failure was quota, overload, auth, transport, or upstream application behavior
- what alert, dashboard, or runbook step should be tightened before the next occurrence