Automatically propagate HTTP headers like x-request-id, x-tenant-id,
through your microservice chain — no code changes required.
Just add Kubernetes annotations to your pods. No SDK, no library, no code modifications needed.
Only ~10MB memory and less than 5ms latency overhead per request. Minimal impact on your workloads.
Works with any language: Go, Python, Node.js, Java, Ruby, and more. Uses standard HTTP_PROXY.
Propagate tenant IDs through all services for data isolation and audit logging in SaaS applications.
Track requests across services with correlation IDs. Debug issues by following the entire request chain (also works great with Telepresence for local development).
Uses standard admission webhooks and CRDs. Production ready with health checks and graceful shutdown.
Modern microservices rely on HTTP headers for request tracing, multi-tenancy, and debugging. Headers like x-request-id, x-tenant-id, and x-correlation-id must flow through every service.
But service meshes don't help. Istio, Linkerd, and Consul don't automatically propagate these headers. Your application code must manually extract incoming headers and attach them to every outgoing request.
1. Install ContextForge:
helm repo add contextforge https://ctxforge.io
helm install contextforge contextforge/contextforge -n ctxforge-system --create-namespace2. Annotate your pods:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-service
spec:
template:
metadata:
labels:
ctxforge.io/enabled: "true"
annotations:
ctxforge.io/enabled: "true"
ctxforge.io/headers: "x-request-id,x-tenant-id,x-correlation-id"
spec:
containers:
- name: app
image: my-app:latest3. Done! Headers flow automatically through your service chain.
%%{init: {'theme': 'dark', 'themeVariables': { 'fontSize': '16px'}}}%%
flowchart TB
subgraph pod["☸️ Your Kubernetes Pod"]
direction TB
req["📥 Incoming Request<br/>x-request-id: abc123<br/>x-tenant-id: acme"]
subgraph proxy["🔄 ContextForge Proxy"]
p1["1. Extract headers"]
p2["2. Store in context"]
p1 --> p2
end
subgraph app["🚀 Your Application"]
a1["Makes HTTP call to another service"]
end
out["📤 Outgoing Request<br/>x-request-id: abc123 ✓<br/>x-tenant-id: acme ✓<br/>Headers auto-injected!"]
req --> proxy
proxy --> app
app --> out
end
style pod fill:#1e293b,stroke:#6366f1,stroke-width:3px,color:#fff
style proxy fill:#312e81,stroke:#818cf8,stroke-width:2px,color:#fff
style app fill:#164e63,stroke:#22d3ee,stroke-width:2px,color:#fff
style req fill:#1e3a5f,stroke:#60a5fa,stroke-width:2px,color:#fff
style out fill:#14532d,stroke:#4ade80,stroke-width:2px,color:#fff
style p1 fill:#4c1d95,stroke:#a78bfa,color:#fff
style p2 fill:#4c1d95,stroke:#a78bfa,color:#fff
style a1 fill:#0e7490,stroke:#67e8f9,color:#fff