Traffic splitting did not work
--
We’re building a POC that utilizes OSM (Open Service Mesh) on an AKS cluster. Our goal is to explore the Traffic, Routes, and MTLS functionalities offered by OSM. We followed the TCP Traffic Routing documentation provided by Open Service Mesh and were able to see traffic being correctly split in calls within the cluster. However, when we tried to use an ingress and make calls through it, the traffic splitting did not work.
The deployment basically consists of these objects in the httpbin namespace.
And these objects are in the curl namespace, which was created solely to assist in testing.
We also have a TrafficSplit object
Details of the TrafficSplit
When we internally test by calling the FQDN http://httpbin.httpbin:14001, everything works well.
Ok, so we concluded the Canary example and observed that it works in a communication process within the cluster. The question is, if this call comes from outside the cluster through an ingress, for example, should the traffic splitting policies continue to work? To continue with this test, we reproduced this demo Ingress with Kubernetes Nginx Ingress Controller | Open Service Mesh.
So now we have another object in the httpbin namespace.
Details of the ingress
Details of the ingress backend
When trying to access the application using the IP 20.206.170.94, we don’t see the Split behavior, but rather a kind of load balancing between the pods.
Design of the objects.
The final question is whether OSM supports Split when the traffic comes from outside the cluster, and if so, what path should we follow?
References
- Canary Rollouts using SMI Traffic Split | Open Service Mesh
- Ingress with Kubernetes Nginx Ingress Controller | Open Service Mesh
- AKS Comandos de CLI. todos os comandos que já usei | by Wilson Santos | Medium
- Open Service Mesh (OSM). O OSM (Open Service Mesh) é uma malha… | by Wilson Santos | Medium
- https://learn.microsoft.com/en-us/azure/aks/open-service-mesh-integrations#ingress