# docker-dev companion to scripts/install/traefik-dynamic.yml. Routes the single
# central cluster UI on the shared Compose network:
#
#   - Central UI (only route): PathPrefix(`/`) → central-1 / central-2.
#
# The driver-only site nodes serve no UI, so they have no Traefik route — the
# central cluster manages and deploys to them over the shared Akka mesh.

http:
  routers:
    otopcua-admin:
      entryPoints: ["web"]
      rule: "PathPrefix(`/`)"
      service: otopcua-admin

  services:
    otopcua-admin:
      loadBalancer:
        # Blazor Server uses SignalR; the WebSocket upgrade must hit the same
        # backend that owns the circuit ID. Sticky cookie keeps each session
        # pinned to one node so the post-handshake WebSocket doesn't 404.
        sticky:
          cookie:
            name: otopcua_lb
            httpOnly: true
            sameSite: lax
        servers:
          - url: "http://central-1:9000"
          - url: "http://central-2:9000"
        healthCheck:
          path: /health/active
          interval: 5s
          timeout: 2s
