job "openfaas" { datacenters = ["dc1"] type = "service" group "openfaas-gateway" { count = 1 constraint { attribute = "${node.unique.name}" operator = "regexp" value = "(master|ash3c|hcp)" } task "openfaas-gateway" { driver = "podman" config { image = "ghcr.io/openfaas/gateway:0.2.35" ports = ["http", "ui"] env = { "functions_provider_url" = "http://${NOMAD_IP_http}:8080" "read_timeout" = "60s" "write_timeout" = "60s" "upstream_timeout" = "60s" "direct_functions" = "true" "faas_nats_address" = "nats://localhost:4222" "faas_nats_streaming" = "true" "basic_auth" = "true" "secret_mount_path" = "/run/secrets" "scale_from_zero" = "true" } } resources { network { mbits = 10 port "http" { static = 8080 } port "ui" { static = 8081 } } } service { name = "openfaas-gateway" port = "http" check { type = "http" path = "/healthz" interval = "10s" timeout = "2s" } } } } group "nats" { count = 1 constraint { attribute = "${node.unique.name}" operator = "regexp" value = "(master|ash3c|hcp)" } task "nats" { driver = "podman" config { image = "nats-streaming:0.25.3" ports = ["nats"] args = [ "-p", "4222", "-m", "8222", "-hbi", "5s", "-hbt", "5s", "-hbf", "2", "-SD", "-cid", "openfaas" ] } resources { network { mbits = 10 port "nats" { static = 4222 } } } service { name = "nats" port = "nats" check { type = "tcp" interval = "10s" timeout = "2s" } } } } group "queue-worker" { count = 1 constraint { attribute = "${node.unique.name}" operator = "regexp" value = "(master|ash3c|hcp)" } task "queue-worker" { driver = "podman" config { image = "ghcr.io/openfaas/queue-worker:0.12.2" env = { "gateway_url" = "http://${NOMAD_IP_http}:8080" "faas_nats_address" = "nats://localhost:4222" "faas_nats_streaming" = "true" "ack_wait" = "5m" "write_debug" = "true" } } resources { network { mbits = 10 } } } } group "prometheus" { count = 1 constraint { attribute = "${node.unique.name}" operator = "regexp" value = "(master|ash3c|hcp)" } task "prometheus" { driver = "podman" config { image = "prom/prometheus:v2.35.0" ports = ["prometheus"] volumes = [ "/opt/openfaas/prometheus.yml:/etc/prometheus/prometheus.yml" ] } resources { network { mbits = 10 port "prometheus" { static = 9090 } } } service { name = "prometheus" port = "prometheus" check { type = "http" path = "/-/healthy" interval = "10s" timeout = "2s" } } } } }