hashicorp/nomad · error
Consul Terminating Gateway requires at least one service
Error message
Consul Terminating Gateway requires at least one service
What it means
ConsulTerminatingConfigEntry.Validate found an empty Services list on a terminating gateway. A terminating gateway must link to at least one upstream Consul service it can proxy for mesh workloads.
Source
Thrown at nomad/structs/services.go:2696
Services: services,
}
}
func (e *ConsulTerminatingConfigEntry) Equal(o *ConsulTerminatingConfigEntry) bool {
if e == nil || o == nil {
return e == o
}
return linkedServicesEqual(e.Services, o.Services)
}
func (e *ConsulTerminatingConfigEntry) Validate() error {
if e == nil {
return nil
}
if len(e.Services) == 0 {
return fmt.Errorf("Consul Terminating Gateway requires at least one service")
}
for _, service := range e.Services {
if err := service.Validate(); err != nil {
return err
}
}
return nil
}
// ConsulMeshConfigEntry is a stub used to represent that the gateway service
// type should be for a Mesh Gateway. Unlike Ingress and Terminating, there is no
// dedicated Consul Config Entry type for "mesh-gateway", for now. We still
// create a type for future proofing, and to keep underlying job-spec marshaling
// consistent with the other types.
type ConsulMeshConfigEntry struct {
// nothing in hereView on GitHub (pinned to 482b49bf1a)
Solutions
- Add one or more service blocks naming the linked Consul services
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at nomad/structs/services.go:2696 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of hashicorp/nomad@482b49bf1a (2026-09-04).
Data as JSON: /api/errors/894f4591fbd46760.
Report an issue: GitHub.