Skip to main content

Workflow: Header-Based Canary

Route specific users (internal testers, partners, opt-in beta users) to the canary version via HTTP headers or cookies, rather than wait for a percentage-based split.


When to Use​

  • Internal testing — Route team members with X-Canary: true header to the new version.
  • Partner access — Give specific partners a cookie to see the preview.
  • Opt-in beta — Let users opt in via a cookie or URL parameter.
Important Notes

Argo Rollouts' setHeaderRoute step is Istio-only out of the box. With Traefik, header/cookie routing is expressed directly on the IngressRoute match rule using the traefik_manage_weighted_routing tool, which generates the correct Traefik matcher syntax automatically.

Also, when both a cookie and a header parameter are set, the cookie parameter takes priority in the tool's generation matrix.


Journey Diagram​


Workflow Scenarios (Tools & Resources)​

Tests traefik_manage_weighted_routing (create) with optional header/cookie matchers, plus generator YAML for the baseline TraefikService/IngressRoute if desired.

StepActionTool / Resource
1Baseline routeTool: traefik_manage_weighted_routing (action=create, route_name=frontend-route, namespace=staging, stable_service=frontend-stable, stable_weight=100, canary_weight=0)
Or use traefik_generate_routing_manifest for GitOps YAML.
2Header CanaryTool: traefik_manage_weighted_routing (action=create, route_name=frontend-canary-header, namespace=staging, stable_weight=0, canary_weight=100, header_name=X-Canary, header_value=true)
Creates a second IngressRoute whose match includes Traefik Header matcher for X-Canary.
3Monitor Route / MetricsResource: traefik://traffic/staging/frontend-canary-header/distribution or traefik://metrics/staging/frontend-canary/summary
Use the route_name you assigned in step 2.
4Cookie CanaryTool: traefik_manage_weighted_routing (action=create, cookie_name=canary, cookie_regex=.yes.)
Beta-flag style routing via Cookie header regex.

Note: The header-qualified route has a more specific match rule (Host + Header), so Traefik's internal priority system automatically favors it over the default route (Host only) when overlapping.


Natural Language Prompts​

Use these exact prompts with the MCP Server to test or automate the workflow operations effortlessly.

Execution Prompts​

"Generate an IngressRoute pointing to the 'frontend-weighted' TraefikService at 'app.example.com' in 'staging'."

"Create a header-based canary route for 'frontend-canary' in 'staging' at hostname 'app.example.com' — route requests with header 'X-Canary: true' to the canary."

"Show me the traffic distribution for 'frontend-canary-header' in 'staging'."

"Show performance metrics for 'frontend-canary' in 'staging'."

"Set up cookie-based canary routing for 'frontend-canary' in 'staging' at 'app.example.com' — route users with cookie 'canary=yes' to the new version."


Next Steps​