Skip to main content

So liest der Edge den Consul-Katalog

Zielgruppe: Betreuer · Stand: 06.11.2026

Diese Seite erklärt, wie der Edge-Traefik den Consul-Katalog liest: welche Services er übernimmt, mit welchem Token und wie er Dienste im Service Mesh erreicht. Du brauchst sie, wenn Du einen Edge aufbaust oder suchst, warum ein Router fehlt.

Voraussetzungen

  • Auf jedem Edge-Knoten läuft ein Consul-Client. Traefik spricht ihn lokal über 127.0.0.1:8500 an.
  • Für den Knoten gibt es ein Token der Policy traefik-catalog (Muster traefik-catalog-<stage>):
service_prefix "" { policy = "read" }
node_prefix ""    { policy = "read" }
service "edge-traefik-<stage>" { policy = "write" }

Tokens und Policies entstehen per Terraform im Stack cloud-core-infrastructure/bremen1/consul-servers.

Vorgehen

  1. Rolle traefik mit Consul-Provider ausrollen. Der Provider wird nur gerendert, wenn die Rolle mit dem Ansible-Tag consul läuft. Die Rolle erzeugt dann in config.toml:
[providers.consulCatalog]
  exposedByDefault = false
  watch = true
  constraints = "Tag(`<stage>`)"
  connectAware = true
  serviceName = "edge-traefik-<kv_stage>"
  [providers.consulCatalog.endpoint]
    address = "127.0.0.1:8500"
    scheme = "http"
  • exposedByDefault = false: Nur Services mit traefik.enable=true werden übernommen.
  • constraints: Nur Services mit dem Tag der technischen Stage (stage) werden übernommen.
  • connectAware und serviceName setzt die Rolle nur bei traefik_consul_connect_aware: true.
  • Das Token steht in config.toml. Die Datei ist deshalb nur für root und die Gruppe traefik lesbar.
  1. Variablen setzen (Rolle traefik):
Variable Bedeutung
traefik_consul_token Token der Policy traefik-catalog. Kommt aus der Secret-Variable, nie im Repo.
traefik_consul_kv_stage Stage für KV-Präfixe und den Connect-Namen edge-traefik-<kv_stage>. Default: stage.
traefik_consul_connect_aware true schaltet Connect ein (Weg zu Diensten im Mesh).
traefik_consul_address / traefik_consul_scheme Consul-Endpoint, Default 127.0.0.1:8500 / http.
  1. Selbstregistrierung prüfen. Die Rolle registriert den Edge selbst in Consul als edge-traefik-<kv_stage> (Tag loadbalancer, Port 443, Check gegen den lokalen Ping). Mit Connect ist es ein Connect-Native-Service. Registriert wird mit dem Traefik-Token, weil das Agent-Token bei Default-Deny keinen Service schreiben darf.

  2. Intentions anlegen. Für jeden Dienst im Mesh, den der Edge erreichen soll, braucht es eine Intention edge-traefik-<kv_stage> → <dienst>. Sie wird nur per Terraform im Stack bremen1/consul-servers (config_entries) ergänzt.

Lab-PoC: Im Lab ist die technische Stage dev (Lab = Stage pre-development im sogenannten DEV-Netz), die KV-Stage aber lab. Der Constraint filtert also auf den Tag dev, der Connect-Name ist edge-traefik-lab.

Prüfen

consul catalog services -tags
consul catalog nodes -service=edge-traefik-<kv_stage>

Der Edge-Service ist registriert und sein Check ist grün. Im Traefik-Dashboard stehen die Router der Services mit Provider consulcatalog.

Stolperfallen

  • Reihenfolge beim Einschalten der ACL: Erst das Traefik-Token ausrollen, dann die ACL einschalten. Sonst verliert der Edge alle Catalog-Routen. Ein Default-Token wird nicht gesetzt.
  • Manuelle Intentions: Ein Neuaufbau des ACL-Setups setzt manuell angelegte Intentions zurück. Danach sind Dienste im Mesh am Edge nicht mehr erreichbar.
  • Rollenlauf ohne Tag consul: Dann fehlt der Consul-Provider in config.toml. Der Edge zeigt nur noch die Router aus dem File-Provider.
  • Restart bei Konfigurationsänderung: Ein Rollenlauf mit geänderter Konfiguration startet Traefik neu. Abgelaufene Backend-Zertifikate fallen erst dabei auf.

Weiterführend