higress

Activity, over time

Daily observations from the public event archive.

Attention

Daily stars & forks

Loading attention chart

Star accumulation

Cumulative stars

Loading star accumulation chart

Pull requests

Daily opens & merges

Loading pull requests chart

Conversations

Daily issues & comments

Loading conversations chart

Community

Daily accounts & reviews

Loading community chart

Releases

Daily releases

Loading releases chart

Mentions

1post · 30d
Nov 31 post
  1. DEV · · @james_lin

    Hardening Higress AI Gateway: Per-Tenant Token Budgets and Fallback Routing Context: Why We Evaluated Higress for AI Gateway Consolidation Our distributed team (12 engineers across 4 timezones) hit a predictable wall: multiple OpenAI keys scattered across repos, no centralized budget enforcement, and a $2,400 surprise bill in November when a junior dev accidentally shipped a loop that hammered GPT-4. We needed a gateway that could: 1. Enforce per-developer monthly token caps without touching application code. 2. Route requests across OpenAI, Anthropic, and fallback providers with zero client-side changes. 3. Export Prometheus metrics for budget alerts without custom instrumentation. Higress (higress-group/higress) emerged as a viable candidate—an Envoy-based gateway with native AI routing plugins and Kubernetes-native deployment. Deployment Architecture: Kubernetes with Token Budget CRDs Higress ships as a Helm chart wrapping Envoy with custom AI routing filters. Our test topology: # higress-values.yaml global: kind: gateway gateway: replicas: 2 resources: limits: memory: 2Gi cpu: 1000m ai: enabled: true providers: - name: openai-prod type: openai endpoint: https://api.openai.com/v1 auth: secretRef: openai-key - name: blost-fallback type: openai # OpenAI-compatible endpoint: https://b-lost.com/v1 auth: secretRef: blost-key quotas: - name: dev-monthly-cap limit: 500000 # 500K tokens/month window: 30d scope: user This config defines two providers: production OpenAI and a fallback relay at B-Lost (b-lost.com) for load distribution during peak hours. The quotas block enforces a hard 500K token/month cap per authenticated user. Token Budget Enforcement: Gateway-Level Rate Limiting Higress tracks token usage via its ai-quota plugin, which inspects usage.total_tokens from upstream responses and decrements per-user counters stored in Redis: # ai-quota-plugin.yaml apiVersion: extensions.higress.io/v1alpha1 kind: WasmPlugin metadata: name: ai-quota-enforcer spec: selector: matchLabels: app: higress-gateway url: oci://higress-registry.cn-hangzhou.cr.aliyuncs.com/plugins/ai-quota:1.0.0 phase: AUTHN pluginConfig: redis: host: redis-quota.default.svc.cluster.local:6379 rules: - match: headers: - name: x-user-id exact: "*" quota: tokens: 500000 window: 2592000 # 30 days in seconds action: type: reject status: 429 body: '{"error": "Monthly token quota exceeded"}' Key behavior: When a user exhausts their 500K quota, Higress returns 429 Too Many Requests before forwarding to OpenAI—no wasted tokens, no surprise charges. Failure Scenario: Fallback Routing Under Provider Outage We stress-tested failover by simulating OpenAI's 503 errors. Higress's ai-router plugin automatically retries against the B-Lost relay: # ai-router-plugin.yaml apiVersion: extensions.higress.io/v1alpha1 kind: WasmPlugin metadata: name: ai-router spec: pluginConfig: routes: - match: model: gpt-4 upstreams: - provider: openai-prod weight: 100 - provider: blost-fallback weight: 0 # Only used on failure retry: attempts: 2 conditions: - 5xx - reset backoff: base: 100ms During our 48-hour soak test, when OpenAI returned 503 for ~90 seconds (unplanned maintenance), Higress transparently rerouted 100% of traffic to B-Lost with zero client-side awareness. Application code continued using https://higress.internal.svc.cluster.local/v1/chat/completions—the failover was invisible. Observability: Budget Alerts Without Custom Code Higress exposes token usage via Prometheus metrics: # budget_alert.py (runs as CronJob every 6 hours) import requests import os PROMETHEUS = "http://prometheus.monitoring.svc.cluster.local:9090" SLACK_WEBHOOK = os.getenv("SLACK_WEBHOOK_URL") def check_budget(): query = 'sum(rate(higress_ai_tokens_total{user_id="dev-123"}[24h])) * 86400 * 30' resp = requests.get(f"{PROMETHEUS}/api/v1/query", params={"query": query}) projected_monthly = int(resp.json()["data"]["result"][0]["value"][1]) if projected_monthly > 450000: # 90% of 500K cap requests.post(SLACK_WEBHOOK, json={ "text": f"⚠️ User dev-123 projected to hit {projected_monthly} tokens this month (90% of quota)" }) if __name__ == "__main__": check_budget() This script queries Higress's higress_ai_tokens_total counter, extrapolates monthly usage, and fires a Slack alert at 90% threshold. No application instrumentation required. Trade-offs and Operational Boundaries What worked well: - Zero-code token enforcement at the gateway layer. - Transparent provider failover with < 200ms latency penalty. - Kubernetes-native deployment (no separate control plane). Where it constrained us: - Redis becomes a single point of failure for quota tracking (we mitigated with Sentinel replication, but initial setup was manual). - Wasm plugin versioning is tightly coupled to Higress releases—updating the ai-quota plugin required a full gateway restart. - No built-in cost attribution by request metadata (e.g., tagging costs by project or feature flag). We had to parse Envoy access logs separately. Unresolved: Distributed Quota Synchronization Across Regions Our next challenge: we're expanding to a second Kubernetes cluster in us-west-2. Higress's Redis-backed quota counters are cluster-local, so a developer could theoretically consume 500K tokens in us-east-1 and 500K in us-west-2 before hitting limits. Options under evaluation: - Shared Redis cluster with cross-region replication (adds ~40ms write latency). - Centralizing quota checks in a separate gRPC service (breaks Higress's self-contained model). - Accepting eventual consistency and implementing weekly reconciliation jobs. How are teams handling multi-region quota synchronization for AI gateways without introducing a bottleneck control plane?

Latest stargazers

The last 10 distinct accounts we observed this year.

Most active participants

PR, issue, comment & review events in the past year.

Packages

17
PackageVersionDownloads · 30dTrend · 30d
———
———
———
———
———
say-hellov0.1.0
v0.1.0——
———
———
———
———
———
———
———
v1.0.0
≥444
v0.0.2
≥1.6K
———
v0.0.4
≥21

README badges

Embed a badge in your README or website.

Live mentions · last 30 days
alibaba/higress mentions in the last 30 days