/health, /readyz, and /version — on their main application port. Orchestrators such as Kubernetes use them to decide when a service is alive, when it can receive traffic, and which build is running. This is the standard probe contract, not a guarantee for every service: some components — workers and sidecars — expose only a subset. The per-service coverage table below is authoritative for exceptions.
The probe endpoints
The spellings are exactly
/health and /readyz — not /healthz or /livez. All three probes are registered on the main application port, before the authentication middleware (they are public probes), and are excluded from access logs and request tracing.The /readyz response body
/readyz returns a JSON document describing overall readiness and each dependency check.
Status vocabulary is a closed set:
- Overall
status:healthyorunhealthy. - Per-check
status:up,down,degraded,skipped,n/a.
/readyz returns HTTP 200 only when overall status is healthy. If any check is down or degraded, it returns HTTP 503.
Startup and shutdown behavior
The probes are wired so an orchestrator never routes traffic to a service that cannot serve it.- Startup self-probe.
/readyzreturns503(“server not ready”) until the listener is up and dependencies are reachable — so a starting pod is not added to a load balancer prematurely, even if/healthalready answers200. - Graceful drain. On
SIGTERM, the service flips/readyzto503for a drain window (about 12 seconds) while/healthstays200. Orchestrators stop routing new traffic during the window, then the process exits once in-flight work drains. The window is tunable viaREADYZ_DRAIN_DELAY_SEC(some services useREADYZ_DRAIN_GRACE_SECONDS). - Deployment mode. The active
DEPLOYMENT_MODEis echoed in the/readyzbody. Insaasmode, a dependency reached without TLS fails the readiness (and boot) check; inbyocit is recommended but not enforced.
Multi-tenant readiness
When multi-tenancy is enabled, the service adds an auth-gated per-tenant readiness probe:/readyz reports tenant-scoped checks as n/a and points to the per-tenant route.
Per-service coverage
Every service below exposes/health (liveness) and /readyz (readiness) on its main port. The table lists default ports, the multi-tenant probe where it applies, and the two path deviations.
Multi-tenant readyz is marked
Yes where the service registers GET /readyz/tenant/{id}; it appears when multi-tenancy is enabled. A — means no dedicated per-tenant probe is registered for that service.Ports are compose/.env.example defaults and can be overridden per deployment — see Default network ports. Varies marks a service whose default port depends on deployment configuration.
