-
Notifications
You must be signed in to change notification settings - Fork 30
Support using Traefik as a Service Mesh with Service Fabric #43
Comments
ProposalCreate an additional label All labels set on the service would then control the behavior of the service in the As a stretch we'd look to add an additional label of # Entrypoints definition
#
# Optional
# Default:
[entryPoints]
[entryPoints.http]
address = ":80"
[entryPoints.traefik]
address = ":8080"
[entryPoints.mesh]
address = ":7887" @AviMualem I know we chatted about this a bit earlier - does this sound like a good plan for you? |
Hey @lawrencegripper , Just to add some background, before i started to think about traefik as a service mesh i started to think about the concept of using Traefik as in internal reverse proxy for my internal service to service communication after i noticed that when using windows as the OS of the cluster nodes the integrated reverse proxy is a thin and basic application which is far from being a fine grained reverse proxy which looks legit for production use cases. On Linux based node deployment, the integrated reverse proxy is Envoy (which i find highly similar to Traefik) which is way different than the windows based reverse proxy app. After i examined all of the features offered from Traefik which include circuit breaker, rate limit, max connections, authorization,letsencrypt support, access log, retry policy and more.. Before going to implementation and thinking about Lables and entry points I would start with checking with the Treaefik team what is their opinion regarding using Traefik as a service mesh, because after reading their documentation and large portion of the code it looks like they are defining Traefik more as a modern reverse proxy which handles communication from the external world into the backend implementation. I cant see any samples or blogs talking about using it for internal service to service communication although its really easy to achieve it due to the fact we already have service discovery so whats left is just to have an entry point with a port which is not exposed to the external world. In the rules identified associated with the internal endpoint i can easily get rate limiting, circuit breaker, retries and more for my internal service to service communication... which are without a doubt a mesh layer responsibility. I even took the time to check it in my DEV cluster with 50+ micro services deployed to it and it looked fine. 40 of them was connected to the internal entry point and 10 were exposed to the external world in and external entry point which i exposed to the external world. Now when it comes to mesh solutions there are a lot of discussions around the division between the data planes and the control planes (more info can be shown here - Treafik is often correlated with the data planes features...in my opinion some of the control planes features too. Projects like Istio (https://istio.io/) have a a real separation between the control and the data plane. As far as it looks to me, it looks legit to use it as mesh because as i mentioned it looks like it includes a lot of out of the box functionality besides routing and classic load balancing, and on top of that at the end of the day Service fabric linux based deployment are are using Envoy in the same manner. In my opinion it might not have the flexibility of stuff like Istio but its can be still used as a mesh layer. Now, regarding the fact you consider to have an option that will prefer stay on the same node in service to service communication (if both service are deployed in the same host) im not sure it the exact behavior we want to achieve. if the node is under a lot of load maybe its better to route the traffic to another node which host the desired service. I would be happy to see your opinion and @jjcollinge opinion as well :) this development should be really precise because if customers will use it as a mesh changing the design will be a hard task :) Avi. |
The aim would be to allow services to use a label like
traefik.servicefabric.enable-mesh
which would publish a service on an internal endpoint.Inter-service communications can then benefit from features of traefik such as circuit-breakers, retry, rate-limiting etc.
Tasks:
The text was updated successfully, but these errors were encountered: