Skip to main content

Router per Consul-Tags definieren

Zielgruppe: Anwender und Betreuer · Stand: 06.11.2026

Der Edge-Traefik baut seine Router aus den Tags der Services im Consul-Katalog. Diese Seite zeigt, welche Tags Du an Deinen Service schreibst, damit er unter einem Hostnamen am Edge erreichbar ist. Wie Du den Service überhaupt registrierst, steht in Dienst im Consul-Katalog registrieren.

Voraussetzungen

  • Der Dienst ist im Consul-Katalog registriert und sein Health-Check ist grün.
  • Er ist eine Oberfläche für Menschen und gehört damit an den Edge (siehe Edge-Grundsatz).
  • Der Hostname liegt unter der Wildcard der Umgebung. Lab-PoC: *.lab.bre1.dexpro.services.

Vorgehen

  1. Freischalten: Der Edge übernimmt keinen Service von selbst. Setz traefik.enable=true und den Stage-Tag des Edge. Lab-PoC: Das Lab ist die Stage pre-development und läuft im sogenannten DEV-Netz, der Stage-Tag heißt deshalb dev.
  2. Router anlegen: Ein Router braucht einen eindeutigen Namen, eine Regel, einen Entrypoint und TLS:
tags = [
  "<stage-tag>",
  "traefik.enable=true",
  "traefik.http.routers.<router>.rule=Host(`<hostname>`)",
  "traefik.http.routers.<router>.entrypoints=https",
  "traefik.http.routers.<router>.tls=true",
]
  • <router>: plattformweit eindeutiger Name, z. B. Dienstname plus Stage (grafana-pilot).
  • <hostname>: voller Hostname unter der Wildcard, z. B. grafana-pilot.lab.bre1.dexpro.services.
  • https ist der interne Entrypoint des Edge. Öffentlich aus dem Internet erreichbar ist ein Router nur mit entrypoints=public. Das ist die Ausnahme und wird mit den Betreuern abgestimmt.
  1. Dienst im Service Mesh: Hängt Dein Dienst per Connect im Mesh (z. B. Nomad-Job mit sidecar_service), ergänze:
"traefik.consulcatalog.connect=true",

Der Edge spricht den Dienst dann per mTLS über Connect an. Dafür braucht es eine Intention edge-traefik-<stage> → <dienst>, die die Betreuer per Terraform anlegen.

  1. Optional, Zugriff beschränken: Admin-Oberflächen hängst Du hinter die IP-Allowlist des Edge:
"traefik.http.routers.<router>.middlewares=admin-allowlist@file",
  1. Optional, Backend mit HTTPS: Spricht Dein Dienst selbst HTTPS, prüft der Edge dessen Zertifikat über ein Backend-TLS-Profil, das die Betreuer am Edge hinterlegen:
"traefik.http.services.<router>.loadbalancer.server.scheme=https",
"traefik.http.services.<router>.loadbalancer.serverstransport=<profil>@file",

<profil> ist der Name des Backend-TLS-Profils. Frag die Betreuer, welches zu Deinem Dienst passt.

  1. Optional, anderer Port: Ohne Angabe nutzt der Edge den Port aus der Service-Registrierung. Einen anderen Port setzt Du mit traefik.http.services.<router>.loadbalancer.server.port=<port>.

Beispiel

Grafana als Nomad-Job im Mesh, erreichbar im Lab (Lab-PoC):

tags = [
  "dev",
  "traefik.enable=true",
  "traefik.consulcatalog.connect=true",
  "traefik.http.routers.grafana-pilot.rule=Host(`grafana-pilot.lab.bre1.dexpro.services`)",
  "traefik.http.routers.grafana-pilot.entrypoints=https",
  "traefik.http.routers.grafana-pilot.tls=true",
]

Prüfen

  • Im Traefik-Dashboard des Edge taucht der Router mit Status „Success“ auf.
  • Prüf den Hostnamen im Browser oder per curl:
curl -sI https://<hostname>

Du bekommst die Antwort Deines Dienstes mit gültigem Zertifikat, kein 404 von Traefik.

Stolperfallen

Falscher Stage-Tag oder fehlendes traefik.enable=true: Der Dienst steht im Katalog, der Edge ignoriert ihn aber. Es gibt keine Fehlermeldung, der Hostname liefert 404.

  • Doppelter Router-Name: Zwei Services mit gleichem Router-Namen, aber anderer Konfiguration verwirft Traefik. Wähl eindeutige Namen.
  • Fehlende Intention: Bei traefik.consulcatalog.connect=true ohne Intention erreicht der Edge den Dienst nicht, weil Default-Deny die Verbindung blockt.
  • Backticks: Die Regel braucht Backticks um den Hostnamen (Host(`…`)), keine Anführungszeichen.
  • Keine Anmeldung: Der Edge ersetzt keine Authentifizierung. Die Oberfläche braucht eine eigene Anmeldung oder mindestens admin-allowlist@file.

Weiterführend