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:8500an. - Für den Knoten gibt es ein Token der Policy
traefik-catalog(Mustertraefik-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
- Rolle
traefikmit Consul-Provider ausrollen. Der Provider wird nur gerendert, wenn die Rolle mit dem Ansible-Tagconsulläuft. Die Rolle erzeugt dann inconfig.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 mittraefik.enable=truewerden übernommen.constraints: Nur Services mit dem Tag der technischen Stage (stage) werden übernommen.connectAwareundserviceNamesetzt die Rolle nur beitraefik_consul_connect_aware: true.- Das Token steht in
config.toml. Die Datei ist deshalb nur fürrootund die Gruppetraefiklesbar.
- 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. |
-
Selbstregistrierung prüfen. Die Rolle registriert den Edge selbst in Consul als
edge-traefik-<kv_stage>(Tagloadbalancer, 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. -
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 Stackbremen1/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 inconfig.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
- Router per Consul-Tags definieren
- Dienst im Consul-Katalog registrieren
- README der Rolle in GitLab:
cloud-core-infrastructure/ansible/roles/traefik - Traefik-Doku: Consul Catalog Provider
No comments to display
No comments to display