Add service healthchecks
This commit is contained in:
parent
0a2eace3dd
commit
35dfeb3093
@ -9,9 +9,11 @@ module "loki" {
|
||||
service_port = 3100
|
||||
ingress = true
|
||||
use_wesher = var.use_wesher
|
||||
service_check = {
|
||||
path = "/ready"
|
||||
}
|
||||
|
||||
sticky_disk = true
|
||||
# healthcheck = "/ready"
|
||||
templates = [
|
||||
{
|
||||
data = file("${path.module}/loki-config.yml")
|
||||
|
@ -53,33 +53,26 @@ job "traefik" {
|
||||
sticky = true
|
||||
}
|
||||
|
||||
service {
|
||||
name = "traefik"
|
||||
provider = "nomad"
|
||||
port = "web"
|
||||
|
||||
check {
|
||||
type = "http"
|
||||
path = "/ping"
|
||||
port = "web"
|
||||
interval = "10s"
|
||||
timeout = "2s"
|
||||
}
|
||||
|
||||
tags = [
|
||||
"traefik.enable=true",
|
||||
"traefik.http.routers.traefik.entryPoints=websecure",
|
||||
"traefik.http.routers.traefik.service=api@internal",
|
||||
]
|
||||
}
|
||||
|
||||
task "traefik" {
|
||||
driver = "docker"
|
||||
|
||||
meta = {
|
||||
"diun.sort_tags" = "semver"
|
||||
"diun.watch_repo" = true
|
||||
"diun.include_tags" = "^[0-9]+\\.[0-9]+$"
|
||||
service {
|
||||
name = "traefik"
|
||||
provider = "nomad"
|
||||
port = "web"
|
||||
|
||||
check {
|
||||
type = "http"
|
||||
path = "/ping"
|
||||
interval = "10s"
|
||||
timeout = "2s"
|
||||
}
|
||||
|
||||
tags = [
|
||||
"traefik.enable=true",
|
||||
"traefik.http.routers.traefik.entryPoints=websecure",
|
||||
"traefik.http.routers.traefik.service=api@internal",
|
||||
]
|
||||
}
|
||||
|
||||
config {
|
||||
|
@ -23,6 +23,9 @@ module "gitea" {
|
||||
to = 22
|
||||
}
|
||||
]
|
||||
service_check = {
|
||||
path = "/api/healthz"
|
||||
}
|
||||
|
||||
custom_services = [
|
||||
{
|
||||
|
@ -15,6 +15,7 @@ resource "nomad_job" "service" {
|
||||
|
||||
service_port = var.service_port
|
||||
service_port_static = var.service_port_static
|
||||
service_check = var.service_check
|
||||
ports = var.ports
|
||||
sticky_disk = var.sticky_disk
|
||||
resources = var.resources
|
||||
|
@ -73,43 +73,7 @@ job "${name}" {
|
||||
source = "${host_volume.name}"
|
||||
}
|
||||
%{~ endfor ~}
|
||||
%{~ if service_port != null }
|
||||
service {
|
||||
name = "${replace(name, "_", "-")}"
|
||||
provider = "nomad"
|
||||
port = "main"
|
||||
|
||||
tags = [
|
||||
%{~ if prometheus == true ~}
|
||||
"prometheus.scrape",
|
||||
%{~ endif ~}
|
||||
%{~ if ingress ~}
|
||||
"traefik.enable=true",
|
||||
"traefik.http.routers.${name}.entryPoints=websecure",
|
||||
%{~ if try(ingress_rule, null) != null ~}
|
||||
"traefik.http.routers.${name}.rule=${ingress_rule}",
|
||||
%{~ endif ~}
|
||||
%{~ for middleware in ingress_middlewares ~}
|
||||
"traefik.http.routers.${name}.middlewares=${middleware}",
|
||||
%{~ endfor ~}
|
||||
%{~ endif ~}
|
||||
%{~ for tag in service_tags ~}
|
||||
"${tag}",
|
||||
%{~ endfor ~}
|
||||
]
|
||||
}
|
||||
%{~ endif ~}
|
||||
|
||||
%{~ for custom_service in custom_services ~}
|
||||
service {
|
||||
name = "${custom_service.name}"
|
||||
provider = "nomad"
|
||||
port = "${custom_service.port}"
|
||||
|
||||
tags = ${jsonencode(custom_service.tags)}
|
||||
}
|
||||
|
||||
%{~ endfor ~}
|
||||
task "${name}" {
|
||||
driver = "docker"
|
||||
%{~ if length(task_meta) > 0 }
|
||||
@ -119,7 +83,58 @@ job "${name}" {
|
||||
%{ endfor ~}
|
||||
}
|
||||
%{~ endif ~}
|
||||
%{~ if service_port != null }
|
||||
service {
|
||||
name = "${replace(name, "_", "-")}"
|
||||
provider = "nomad"
|
||||
port = "main"
|
||||
|
||||
tags = [
|
||||
%{~ if prometheus == true ~}
|
||||
"prometheus.scrape",
|
||||
%{~ endif ~}
|
||||
%{~ if ingress ~}
|
||||
"traefik.enable=true",
|
||||
"traefik.http.routers.${name}.entryPoints=websecure",
|
||||
%{~ if try(ingress_rule, null) != null ~}
|
||||
"traefik.http.routers.${name}.rule=${ingress_rule}",
|
||||
%{~ endif ~}
|
||||
%{~ for middleware in ingress_middlewares ~}
|
||||
"traefik.http.routers.${name}.middlewares=${middleware}",
|
||||
%{~ endfor ~}
|
||||
%{~ endif ~}
|
||||
%{~ for tag in service_tags ~}
|
||||
"${tag}",
|
||||
%{~ endfor ~}
|
||||
]
|
||||
|
||||
%{~ if service_check != null ~}
|
||||
check {
|
||||
%{~ if service_check.name != "" ~}
|
||||
name = "${service_check.name}"
|
||||
%{~ endif ~}
|
||||
%{~ if service_check.name != "" ~}
|
||||
port = "${service_check.port}"
|
||||
%{~ endif ~}
|
||||
type = "${service_check.type}"
|
||||
path = "${service_check.path}"
|
||||
interval = "${service_check.interval}"
|
||||
timeout = "${service_check.timeout}"
|
||||
}
|
||||
%{~ endif ~}
|
||||
}
|
||||
|
||||
%{~ endif ~}
|
||||
%{~ for custom_service in custom_services ~}
|
||||
service {
|
||||
name = "${custom_service.name}"
|
||||
provider = "nomad"
|
||||
port = "${custom_service.port}"
|
||||
|
||||
tags = ${jsonencode(custom_service.tags)}
|
||||
}
|
||||
|
||||
%{~ endfor ~}
|
||||
config {
|
||||
image = "${image}"
|
||||
%{~if image_pull_timeout != null ~}
|
||||
|
@ -268,3 +268,17 @@ variable "use_wesher" {
|
||||
description = "Indicates whether or not services should expose themselves on the wesher network"
|
||||
default = true
|
||||
}
|
||||
|
||||
variable "service_check" {
|
||||
description = "Health check for main ingress service"
|
||||
type = object({
|
||||
name = optional(string, "")
|
||||
port = optional(string, "")
|
||||
path = optional(string, "/")
|
||||
interval = optional(string, "30s")
|
||||
timeout = optional(string, "2s")
|
||||
type = optional(string, "http")
|
||||
})
|
||||
|
||||
default = {}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user