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.