For those interested, we ended up writing a small Service Fabric service that generates a Traefik Dynamic Configuration File based on the running state of our Service Fabric Cluster services.
Our implementation is a bit too specific to our scenario to be useful to share, however the implementation was quite easy, and was made so much more simpler because of the Traefik File Provider which will simply watch a file and processes that file for its configuration.
I would strongly suggest considering the Traefik File Provider as an alternative to the Service Fabric provider if:
You have requirements that don't quite fit in the "label configuration model" available from the Traefik Service Fabric Provider
You want to start using Traefik v2 now
You would like to control the configuration process yourself (e.g. when to update Traefik).
We created a static Traefik.yml file with the static configuration in it, and generated another TrafikDynamic.yml file with code. Our first version just periodically polled Service Fabric for it's current configuration and we would then merely output that to the dynamic config file at which point Traefik would do it's magic.
Our current version will now listen to a Service Fabric Notification that signals if a configuration change of the cluster has occurred and only then would we generate an updated configuration file, and only if that new configuration was different to the file already on disk. These improvements reduced the overhead on both Service Fabric and Traefik considerably too.
We're looking at Traefik v2 and need Service Fabric support too. Your approach sounds great, but the bit I don't get is how you got the dynamic configuration file from the Fabric Service endpoint onto your Traefik's host file system?