Trying to get Service Fabric configuration provider working

Hi! I'm trying out the Service Fabric provider for the first time. Running into some issues. Here's my config:

debug = true
logLevel = "INFO"
defaultEntryPoints = ["http", "https"]
[entryPoints]
[entryPoints.http]
address = ":81"

[api]
entrypoint="dashboard"

[entryPoints.dashboard]
  address = ":8443"

[serviceFabric]

clusterManagementUrl = "https://localhost:19080"
apiVersion = "3.0"
refreshSeconds = 10

[serviceFabric.tls]
  cert = "C:/Users/rdpadmin/TraefikTest/sf.crt"
  key = "C:/Users/rdpadmin/TraefikTest/sf.key"
  insecureSkipVerify = true

Here's my ServiceManifest.xml:

<StatelessServiceType ServiceTypeName="ApiType" UseImplicitHost="true">
  <Extensions>
    <Extension Name="Traefik">
      <Labels xmlns="http://schemas.microsoft.com/2015/03/fabact-no-schema">
        <Label Key="traefik.frontend.rule.apiforwarder">PathPrefix: /api/, /swagger, /identity, /content</Label>
        <Label Key="traefik.enable">true</Label>
        <Label Key="traefik.frontend.passHostHeader">true</Label>
      </Labels>
    </Extension>
  </Extensions>      
</StatelessServiceType>

When I go to the dashboard I see:

So, it looks like things are working. However, I'm not sure if I'm supposed to see various instances of my service listed in the Backends box (it's running in 5 instances).

When I run:

iwr -UseBasicParsing http://localhost:81/api/diagnostic/healthcheck

From the local machine running Traefik, I get "Service Unavailable". So, I'm guessing it doesn't know which backend to route it to.

One more thing I notice that might possibly be related, in the Traefik logs I see:

ERRO[2019-09-27T15:22:44-07:00] Undefined entry point(s) 'https' for frontend frontend-fabric:/Frontend/Api
INFO[2019-09-27T15:22:44-07:00] Skipping same configuration for provider servicefabric
INFO[2019-09-27T15:22:53-07:00] Checking service fabric config
ERRO[2019-09-27T15:22:53-07:00] Undefined entry point(s) 'https' for frontend frontend-fabric:/Frontend/Api
INFO[2019-09-27T15:22:53-07:00] Skipping same configuration for provider servicefabric
INFO[2019-09-27T15:23:03-07:00] Checking service fabric config
ERRO[2019-09-27T15:23:03-07:00] Undefined entry point(s) 'https' for frontend frontend-fabric:/Frontend/Api
INFO[2019-09-27T15:23:03-07:00] Skipping same configuration for provider servicefabric
INFO[2019-09-27T15:23:13-07:00] Checking service fabric config
ERRO[2019-09-27T15:23:13-07:00] Undefined entry point(s) 'https' for frontend frontend-fabric:/Frontend/Api
INFO[2019-09-27T15:23:13-07:00] Skipping same configuration for provider servicefabric

I'm wondering if that "Undefined entry point" thing is part of the problem. Thanks!

Version: v1.7.9
Codename: maroilles
Go version: go1.11.5
Built: 2019-02-11_11:36:32AM
OS/Arch: windows/amd64

Figured out the issue. I had to change:

<Endpoint Name="ApiTypeEndpoint" Port="11080" />
<Endpoint Name="ApiSslTypeEndpoint" Protocol="https" Port="11443" />

To:

<Endpoint Name="ApiTypeEndpoint" Protocol="http" UriScheme="http" Port="11080" />
<Endpoint Name="ApiSslTypeEndpoint" Protocol="https" UriScheme="https" Port="11443" />

in my ServiceManifest.xml file. Seems the Protocol and UriScheme are important. I also added:

<Label Key="traefik.servicefabric.endpointname">ApiSslTypeEndpoint</Label>

Which lets me choose exactly which endpoint to use.

Hey Mike

I have same issue like yours, yet your suggestion does help, can you please help?

We use Traefik 1.7.20

As you can see, I have 2 endpoints, which I'd like Traefik to route to the first one (https://10.0.0.9:8010).

My ServiceManifest.xml looks like this:

<ServiceManifest xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ManifestId="3135b832-59cd-4644-943e-e28bbe0e0006" Name="GatewayPkg" Version="1.1" xmlns="http://schemas.microsoft.com/2011/01/fabric">
  <ServiceTypes>
    <StatelessServiceType ServiceTypeName="GatewayType">
      <Extensions>
        <Extension Name="Traefik">
          <Labels xmlns="http://schemas.microsoft.com/2015/03/fabact-no-schema">
            <!-- Traefik enable/disable settings -->
            <Label Key="traefik.enable">true</Label>

            <!-- Frontend settings -->
            <Label Key="traefik.servicefabric.endpointname">HttpsServiceEndpoint</Label>
            <Label Key="traefik.frontend.entryPoints">https</Label>
            <Label Key="traefik.frontend.passHostHeader">true</Label>
            <Label Key="traefik.frontend.rule.1">PathPrefixStrip:/throttler/</Label>

            <!-- Request distribution and limits settings -->
            <Label Key="traefik.backend.loadbalancer.method">drr</Label>
            <Label Key="traefik.backend.maxconn.amount">50</Label>
            <Label Key="traefik.backend.maxconn.extractorfunc">client.ip</Label>
            <Label Key="traefik.backend.circuitbreaker.expression">LatencyAtQuantileMS(95.0) &gt; 8000</Label>
          </Labels>
        </Extension>
      </Extensions>
    </StatelessServiceType>
  </ServiceTypes>
  <CodePackage Name="Code" Version="1.1">
    <SetupEntryPoint>
      <ExeHost>
        <Program>startup\startup.cmd</Program>
        <WorkingFolder>CodePackage</WorkingFolder>
      </ExeHost>
    </SetupEntryPoint>
    <EntryPoint>
      <ExeHost>
        <Program>GatewayService.exe</Program>
      </ExeHost>
    </EntryPoint>
  </CodePackage>
  <ConfigPackage Name="Config" Version="1.1" />
  <Resources>
    <Endpoints>
      <Endpoint Name="HttpsServiceEndpoint" Protocol="https" Type="Input" Port="8010" UriScheme="https" />
      <Endpoint Name="ServiceEndpoint" />
    </Endpoints>
  </Resources>
</ServiceManifest>

However, Traefik does not find any backends:

Although it does create a frontend:

image

Do you see anything I misconfigured here?

Thank you!

Maybe paste in the logs when Traefik starts up? Those would probably be helpful for debugging.. You might be better off posting a new thread so more people take a look at it..