Consul
Consul bei DEXPRO: Service-Katalog, KV und Service Mesh der Plattform.
Schnelleinstieg
Einstieg: was Consul bei DEXPRO ist und wo Du was findest.
Schnelleinstieg
Zielgruppe: Anwender und Betreuer · Stand: 06.11.2026
Consul ist der Service-Katalog, KV-Speicher und das Service Mesh (Connect) der DEXPRO-Plattform. Dienste registrieren sich dort, der Edge-Traefik baut aus ihren Tags seine Routen, und im Mesh regeln Intentions, wer mit wem sprechen darf.
Als Anwender möchte ich …
- … meinen Dienst im Katalog registrieren → Dienst im Consul-Katalog registrieren
- … meinen Dienst am Edge erreichbar machen → Router per Consul-Tags definieren
- … wissen, was gerade gilt → Gültiger Stand und Verlauf
Als Betreuer möchte ich …
- … Consul-Zertifikate aus OpenBao beziehen → Consul-Zertifikate aus OpenBao
- … verstehen, wie der Edge den Katalog liest → So liest der Edge den Consul-Katalog
- … TCP-Entrypoints für Datenbanken in KV pflegen → TCP-Routen für Datenbanken
Weitere Bücher
- Developer Good Practice: Grundsätze für alle Technologien
- Traefik: Edge-Router und interner Ingress
Historie und Gültigkeit
Gültiger Stand, offene Punkte und Verlauf der Entscheidungen.
Gültiger Stand und Verlauf
Zielgruppe: Anwender und Betreuer · Stand: 06.11.2026
Hier steht, was für Consul bei DEXPRO gerade gilt und wie es dazu kam. Schau hier nach, bevor Du Dich auf ältere Notizen oder Gespräche verlässt.
Gültiger Stand
- Konzept (20.10.2026): Consul wird neu aufgebaut, mit ACL
default_policy = deny, TLS und Connect (Service Mesh). Jeder Konsument bekommt eine eigene Policy und ein eigenes Token. Der Bestand in DEV und Produktion bleibt unverändert. TLS und ACL kommen dort nur über Neuaufbau und Migration. - Entscheidung (20.10.2026): Die HTTP-API der Clients lauscht nur lokal auf
127.0.0.1:8500. Für CI-Runner bieten die Server HTTPS auf Port8501an. - Regel (20.10.2026): Der Edge-Traefik liest den Katalog mit einem eigenen Token der Policy
traefik-catalog, die Services und Nodes lesen darf. Ein Default-Token gibt es nicht. Beim Einschalten der ACL kommt zuerst das Traefik-Token, danach die ACL. - Regel (21.10.2026): Intentions entstehen nur per Terraform im Stack
cloud-core-infrastructure/bremen1/consul-servers(config_entries) und werden nur ergänzt. Default-Deny ist aktiv: Ohne Intention kommt keine Verbindung durchs Mesh. - Konzept (20.10.2026): KV-Schema
traefik/<stage>/tcp/<entrypoint>für TCP-Entrypoints des Edge,services/<stage>/…für Dienstkonfiguration undsqueeze.config/<partner>/…(ohne Stage) für SQUEEZE-Mandanten. - Fakt (20.10.2026): Lab-PoC: Das Lab ist die Stage
pre-developmentund läuft im sogenannten DEV-Netz. In der Konfiguration tragen die Lab-Consul-Server deshalb technischstage = dev, nur KV-Präfixe und Token-Namen tragenlab. Deshalb tragen Lab-Dienste den Stage-Tagdev(siehe Dienst im Consul-Katalog registrieren). - Entscheidung (30.10.2026): Server-Zertifikate kommen nur noch aus OpenBao (Modul-Linie
0.3vonterraform-modules/proxmox/consul). Details: Consul-Zertifikate aus OpenBao.
Verlauf
- Fakt (30.10.2026): Der Lab-Cluster wurde mit dem gesamten Lab abgerissen. Neu aufgebaut wird er nur über den OpenBao-Weg.
- Regel (28.10.2026): Jeder Neuaufbau des ACL-Setups setzt manuell angelegte Intentions zurück. Deshalb Intentions nur in Terraform pflegen (siehe Gültiger Stand).
- Fakt (22.10.2026): Der bisherige DEV-Cluster ist abgerissen.
- Entscheidung (20.10.2026): Das Lab läuft mit Consul
2.0.3. Für den Bestand in DEV und Produktion bleibt der Rollen-Default1.21.5. - Konzept (20.10.2026): Start des Neuaufbaus im Lab mit ACL deny, TLS und Connect.
Service-Katalog
Dienste im Consul-Katalog registrieren, Tags und Health-Checks.
Dienst im Consul-Katalog registrieren
Zielgruppe: Anwender und Betreuer · Stand: 06.11.2026
Consul ist der Service-Katalog, KV-Speicher und das Service Mesh (Connect) der Plattform. Diese Seite zeigt, wie Du einen Dienst im Katalog registrierst, damit andere ihn finden und der Edge-Traefik ihn per Tags routen kann.
Voraussetzungen
- Ein Consul-Agent auf dem Host (VM) bzw. ein Nomad-Cluster, der an Consul angebunden ist.
- Mit aktiver ACL (
default_policy = deny): ein Token, das Deinen Service schreiben darf. Die Policy dazu sieht so aus:
service "<dienst>" { policy = "write" }
<dienst> ist der Name Deines Service im Katalog. Tokens und Policies legen die Betreuer per Terraform im Stack cloud-core-infrastructure/bremen1/consul-servers an. Woher Du das Token bekommst, sagen Dir die Betreuer.
Vorgehen
Variante A: Dienst auf einer VM (Service-Definition)
- Leg auf dem Host eine Service-Definition unter
/etc/consul.d/an, am besten über eine Ansible-Rolle (Beispiel: Rolleconsul.maxscaleincloud-core-infrastructure/ansible/roles). - Trag Name, Adresse, Port, Tags und einen Health-Check ein:
service {
name = "<dienst>"
id = "<dienst>-<host>"
address = "<host-fqdn>"
port = <port>
token = "<token>"
tags = [
"<stage-tag>",
"traefik.enable=true",
]
check {
id = "<dienst>-<host>-tcp"
name = "<dienst> TCP"
tcp = "<host-fqdn>:<port>"
interval = "10s"
timeout = "3s"
}
}
<host-fqdn>: Hostname des Hosts, keine IP.<token>: das Token mitservice "<dienst>" write. Es kommt aus der Rollen-Variable und steht nie im Repo.<stage-tag>: die Stage, auf die der Edge filtert (siehe unten).
- Lade Consul neu (
consul reload) bzw. lass die Rolle das per Handler erledigen.
Variante B: Dienst in Nomad
Im Job registriert der service-Block den Dienst in Consul:
service {
name = "<dienst>"
provider = "consul"
port = "<port>"
tags = [
"<stage-tag>",
"traefik.enable=true",
]
connect {
sidecar_service {}
}
}
Mit connect { sidecar_service {} } hängt der Dienst im Service Mesh. Dann erreichen ihn andere Dienste nur über eine Intention (siehe Stolperfallen).
Tags
- Stage-Tag: Der Edge-Traefik übernimmt nur Services mit dem Tag seiner Stage. Lab-PoC: Das Lab ist die Stage
pre-developmentund läuft im sogenannten DEV-Netz. Die Lab-Edges filtern deshalb auf den Tagdev. - Traefik-Tags (
traefik.enable=true,traefik.http.routers.…): Sie legen fest, wie der Edge den Dienst routet. Details in Router per Consul-Tags definieren. - Ohne
traefik.enable=truebleibt ein Dienst im Katalog, ist aber am Edge nicht erreichbar. Das ist der Normalfall für interne Dienste.
Prüfen
consul catalog services -tags
consul catalog nodes -service=<dienst>
Der Dienst erscheint mit Deinen Tags. In der Consul-UI ist sein Health-Check grün.
Stolperfallen
Falscher Stage-Tag: Ein Lab-Dienst mit dem Tag lab statt dev steht im Katalog, der Edge ignoriert ihn aber. Es gibt keine Fehlermeldung.
- Token ohne Schreibrecht: Mit Default-Deny scheitert die Registrierung, wenn das Agent-Token den Service nicht schreiben darf. Gib in der Service-Definition das passende Token an.
- Intentions fehlen: Bei Diensten im Mesh blockt Default-Deny jede Verbindung ohne Intention, auch die vom Edge (
edge-traefik-<stage>→<dienst>). Intentions legen die Betreuer per Terraform im Stackbremen1/consul-serversan. Manuell gesetzte Intentions gehen beim nächsten Neuaufbau des ACL-Setups verloren. - Nomad-Workloads: Lab-PoC: Die Anmeldung von Nomad-Workloads an Consul (Workload Identity) wird gerade nachgewiesen. Frag vor dem ersten Job die Betreuer nach dem aktuellen Stand.