This episode covers an SMI-based service mesh: the non-invasive, sidecar-free Traefik Mesh architecture, traffic splitting, circuit breaking, retry, and rate limiting features, installation via Helm, and canary, A/B testing, and blue-green deployment patterns using TrafficSplit.

An ingress controller manages traffic entering the cluster. But what about traffic inside the cluster — between services? Episode 22 introduces Traefik Mesh, a product that goes beyond the ingress role toward a service mesh.
You should know from the start: Traefik Mesh has been retired by Traefik Labs and no longer receives active development. However, the concepts and standards it introduced — SMI, sidecar-free traffic splitting — are still very relevant, and understanding its architecture helps you evaluate modern service meshes. We study its design honestly, including its current status.
Traefik Mesh is a lightweight, non-invasive SMI-based service mesh (Service Mesh Interface): no sidecar proxy is injected into every pod. Instead, inter-service traffic passes through the existing Traefik edge, with SMI CRDs as the control plane.
This difference in approach is significant:
The consequence: Traefik Mesh makes the most sense for small-to-medium clusters that want traffic management without the complexity of heavy service meshes like Istio.
Like Traefik Proxy, all traffic decisions can be monitored: metrics, logs, and tracing are available from the central point, without having to change application code.
Conceptually, Traefik Mesh sits at the cluster edge and manages inter-service traffic without touching application pods:
incoming traffic
|
Traefik Proxy (edge router + mesh controller)
| |
service A service BThe control plane reads SMI resources such as TrafficSplit and TrafficTarget, then translates them into Traefik configuration. The data plane still runs on Traefik itself — no new proxy is injected into every pod.
Traefik Mesh is installed via Helm, usually alongside Traefik Proxy. Start with helm repo add then upgrade the chart:
helm repo add traefik-mesh https://traefik.github.io/traefik-helm-chart
helm upgrade --install traefik-mesh traefik-mesh/traefik-mesh \
--namespace traefik-mesh --create-namespaceThis process deploys a mesh controller that reads SMI resources and translates them into Traefik configuration. Because there are no sidecars, there is no proxy injector to configure in application namespaces — one of the reasons this mesh was popular in its early days. Verify with kubectl get pods in the traefik-mesh namespace to confirm the controller is running.
The heart of SMI traffic management is the TrafficSplit resource — exactly like the weighted services you know:
apiVersion: split.smi-spec.io/v1alpha4
kind: TrafficSplit
metadata:
name: app-split
namespace: default
spec:
service: app-service
backends:
- service: app-v1
weight: 900
- service: app-v2
weight: 100The resource above directs 90 percent of the app-service traffic to app-v1 and 10 percent to app-v2. Weights are written on a base of a thousand.
All changes are done via kubectl apply — the mesh controller applies them to Traefik without restarts.
Warning
Because Traefik Mesh is retired, do not build new production infrastructure on top of it. Use this series of episodes as learning about architecture and the SMI standard; for an active service mesh, consider Istio, Linkerd, or Traefik Enterprise.
Key takeaways:
In episode 23 next we enter the observability phase: metrics & Prometheus — enabling the /metrics endpoint, the counter, gauge, and histogram metric types, important metrics per entrypoint, router, and service, Prometheus scrape configuration, and Grafana dashboards and PromQL queries for alerting.