-
Notifications
You must be signed in to change notification settings - Fork 129
Open
Description
Problem statement
Developers sometimes need to quickly change routing behavior in production without a deploy (e.g., temporarily ignore health checks to re-route traffic during an incident). Today, the gateway computes health and routability automatically; there is no supported way to override it in real time across all gateway instances.
Example and practical use case at Linkedin:
- Temporarily disable health-based routing decisions (global “kill switch”).
- Adjust health thresholds (e.g., required healthy worker percentage) at runtime.
- A path to support future feature toggles (e.g., choose routing manager implementation, rule-engine mode) without adding bespoke config flags or redeploying.
Goals
- Provide a minimal, generic runtime settings table shared by all gateway instances.
- Expose a small admin API + simple UI toggle for oncall.
- Safe by default: reads are cached, writes are audited, and feature flags have clear defaults.
- Backward compatible: if the Settings table is absent, gateway behaves exactly as today.
We can add a new gateway_settings table which might look like
CREATE TABLE IF NOT EXISTS gateway_settings (
setting_key VARCHAR(128) NOT NULL PRIMARY KEY,
setting_value VARCHAR(1024) NOT NULL,
scope_type ENUM('GLOBAL','ROUTING_GROUP','CLUSTER') DEFAULT 'GLOBAL',
scope_id VARCHAR(128) NULL,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
updated_by VARCHAR(128) NOT NULL
);
And provide some API for admin to update like:
GET /v1/admin/settings
→ 200 { "health.monitor.enabled":"true", "health.required.minHealthyWorkerPercent":"80" }
Also add some associated facilitated UX feature.
cc @xkrogen
Metadata
Metadata
Assignees
Labels
No labels