Add service healthchecks
This commit is contained in:
parent
0a2eace3dd
commit
35dfeb3093
@ -9,9 +9,11 @@ module "loki" {
|
|||||||
service_port = 3100
|
service_port = 3100
|
||||||
ingress = true
|
ingress = true
|
||||||
use_wesher = var.use_wesher
|
use_wesher = var.use_wesher
|
||||||
|
service_check = {
|
||||||
|
path = "/ready"
|
||||||
|
}
|
||||||
|
|
||||||
sticky_disk = true
|
sticky_disk = true
|
||||||
# healthcheck = "/ready"
|
|
||||||
templates = [
|
templates = [
|
||||||
{
|
{
|
||||||
data = file("${path.module}/loki-config.yml")
|
data = file("${path.module}/loki-config.yml")
|
||||||
|
@ -53,33 +53,26 @@ job "traefik" {
|
|||||||
sticky = true
|
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" {
|
task "traefik" {
|
||||||
driver = "docker"
|
driver = "docker"
|
||||||
|
|
||||||
meta = {
|
service {
|
||||||
"diun.sort_tags" = "semver"
|
name = "traefik"
|
||||||
"diun.watch_repo" = true
|
provider = "nomad"
|
||||||
"diun.include_tags" = "^[0-9]+\\.[0-9]+$"
|
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 {
|
config {
|
||||||
|
@ -23,6 +23,9 @@ module "gitea" {
|
|||||||
to = 22
|
to = 22
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
service_check = {
|
||||||
|
path = "/api/healthz"
|
||||||
|
}
|
||||||
|
|
||||||
custom_services = [
|
custom_services = [
|
||||||
{
|
{
|
||||||
|
@ -15,6 +15,7 @@ resource "nomad_job" "service" {
|
|||||||
|
|
||||||
service_port = var.service_port
|
service_port = var.service_port
|
||||||
service_port_static = var.service_port_static
|
service_port_static = var.service_port_static
|
||||||
|
service_check = var.service_check
|
||||||
ports = var.ports
|
ports = var.ports
|
||||||
sticky_disk = var.sticky_disk
|
sticky_disk = var.sticky_disk
|
||||||
resources = var.resources
|
resources = var.resources
|
||||||
|
@ -73,43 +73,7 @@ job "${name}" {
|
|||||||
source = "${host_volume.name}"
|
source = "${host_volume.name}"
|
||||||
}
|
}
|
||||||
%{~ endfor ~}
|
%{~ 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}" {
|
task "${name}" {
|
||||||
driver = "docker"
|
driver = "docker"
|
||||||
%{~ if length(task_meta) > 0 }
|
%{~ if length(task_meta) > 0 }
|
||||||
@ -119,7 +83,58 @@ job "${name}" {
|
|||||||
%{ endfor ~}
|
%{ endfor ~}
|
||||||
}
|
}
|
||||||
%{~ endif ~}
|
%{~ 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 {
|
config {
|
||||||
image = "${image}"
|
image = "${image}"
|
||||||
%{~if image_pull_timeout != null ~}
|
%{~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"
|
description = "Indicates whether or not services should expose themselves on the wesher network"
|
||||||
default = true
|
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