In this lesson, you will learn how to orchestrate fine-grained traffic shifting by allowing Argo Rollouts to manipulate Service Mesh APIs directly, bypassing the limitations of standard Kubernetes Ingress controllers.
Why Bypass the Ingress Controller?
Standard Ingress controllers often lack the granularity required for complex traffic splitting. When using a service mesh like Istio, the mesh controls the data plane (the sidecars) directly. Instead of modifying Ingress resources—which might require global updates or complex path rewrites—Argo Rollouts can interface with Service Mesh objects (like VirtualService or HTTPRoute) to adjust traffic weights dynamically based on your canary progression.
Integrating with Service Mesh Plugins
Argo Rollouts uses "Traffic Routing" plugins to act as a controller for your mesh. By defining a trafficRouting block in your Rollout object, you delegate the traffic shift logic to the mesh. The Rollout controller updates the mesh configuration (e.g., changing a weight from 10% to 20%) without ever touching the actual service selector labels. This decoupling ensures that your deployment pods remain stable while the proxy layer manages the routing logic.
For example, when using the Istio integration, your Rollout configuration looks like this:
spec:
strategy:
canary:
trafficRouting:
istio:
virtualService:
name: my-app-vs
routes:
- primary
steps:
- setWeight: 10
- pause: {duration: 1m}
In this setup, the istio plugin automatically modifies the VirtualService defined in your cluster. It updates the weights between your primary and canary subsets as the deployment advances. Because this happens at the Service Mesh layer, you gain sub-percentage control and can leverage sophisticated features like header-based routing or fault injection during the canary phase, which standard Ingress controllers simply cannot support.
By keeping the traffic management logic within the mesh's domain, you ensure that your progressive delivery strategy remains isolated from the underlying networking complexity, resulting in a cleaner, more robust GitOps workflow.
Key Takeaway: By using Service Mesh plugins in Argo Rollouts, you move traffic shifting authority to the data plane, enabling high-precision canary releases without the overhead of modifying standard Ingress or Service objects.