Nomad
connect Stanza
Placement | job -> group -> service -> connect |
The connect
stanza allows configuring various options for
Consul Connect. It is
valid only within the context of a service definition at the task group
level. For using connect
when Consul ACLs are enabled, be sure to read through
the Secure Nomad Jobs with Consul Connect
guide.
job "countdash" {
datacenters = ["dc1"]
group "api" {
network {
mode = "bridge"
}
service {
name = "count-api"
port = "9001"
connect {
sidecar_service {}
}
}
task "web" {
driver = "docker"
config {
image = "hashicorpnomad/counter-api:v2"
}
}
}
}
connect
Parameters
sidecar_service
-(sidecar_service: nil)
- This is used to configure the sidecar service injected by Nomad for Consul Connect.sidecar_task
-(sidecar_task:nil)
- This modifies the configuration of the Envoy proxy task.
connect
Examples
The following example is a minimal connect stanza with defaults and is sufficient to start an Envoy proxy sidecar for allowing incoming connections via Consul Connect.
connect {
sidecar_service {}
}
The following example includes specifying upstreams
.
connect {
sidecar_service {
proxy {
upstreams {
destination_name = "count-api"
local_bind_port = 8080
}
}
}
}
The following is the complete countdash
example. It includes an API service
and a frontend Dashboard service which connects to the API service as a Connect
upstream. Once running, the dashboard is accessible at localhost:9002
.
job "countdash" {
datacenters = ["dc1"]
group "api" {
network {
mode = "bridge"
}
service {
name = "count-api"
port = "9001"
connect {
sidecar_service {}
}
check {
expose = true
type = "http"
name = "api-health"
path = "/health"
interval = "10s"
timeout = "3s"
}
}
task "web" {
driver = "docker"
config {
image = "hashicorpnomad/counter-api:v2"
}
}
}
group "dashboard" {
network {
mode = "bridge"
port "http" {
static = 9002
to = 9002
}
}
service {
name = "count-dashboard"
port = "9002"
connect {
sidecar_service {
proxy {
upstreams {
destination_name = "count-api"
local_bind_port = 8080
}
}
}
}
}
task "dashboard" {
driver = "docker"
env {
COUNTING_SERVICE_URL = "http://${NOMAD_UPSTREAM_ADDR_count_api}"
}
config {
image = "hashicorpnomad/counter-dashboard:v2"
}
}
}
}
Limitations
Consul Connect Native services and Nomad variable interpolation are not yet supported.