homelab/nomad-job/traefik-ingress.nomad

133 lines
3.0 KiB
Plaintext
Raw Permalink Normal View History

2022-04-24 10:47:41 +00:00
job "traefik-ingress" {
datacenters = ["hetzner"]
type = "service"
2022-05-26 12:18:52 +00:00
meta {
force_deploy= 1
}
2022-04-24 10:47:41 +00:00
group "traefik-ingress" {
network {
mode = "host"
port "http" {
static = 80
host_network = "public"
}
port "https" {
static = 443
host_network = "public"
}
port "admin" {
static = 9080
host_network = "private"
}
2022-09-09 16:53:54 +00:00
port "ssh" {
static = 2222
host_network = "public"
}
2022-04-24 10:47:41 +00:00
}
2022-04-24 20:19:18 +00:00
vault{
policies=["access-tables"]
}
2022-05-26 12:18:52 +00:00
task "traefik" {
2022-04-24 10:47:41 +00:00
driver = "docker"
service {
name = "traefik"
tags = ["traefik"]
port = "https"
}
service {
name = "traefik-admin"
port = "admin"
tags = [
2022-05-23 19:44:34 +00:00
"homer.enable=true",
"homer.name=Traefik admin",
"homer.subtitle=WAN",
"homer.service=Platform",
"homer.logo=https://upload.wikimedia.org/wikipedia/commons/1/1b/Traefik.logo.png",
"homer.target=_blank",
"homer.url=http://${NOMAD_ADDR_admin}",
2022-04-24 10:47:41 +00:00
]
}
config {
image = "traefik"
ports = [
"http",
"https",
2022-09-09 16:53:54 +00:00
"admin",
"ssh"
2022-04-24 10:47:41 +00:00
]
volumes =[
2022-04-24 20:19:18 +00:00
"local/traefik.toml:/etc/traefik/traefik.toml",
"/mnt/diskstation/nomad/traefik/acme.json:/acme.json"
2022-04-24 10:47:41 +00:00
]
}
# vault{
#}
env {
}
2022-04-24 20:19:18 +00:00
template{
data=<<EOH
GANDIV5_API_KEY = "{{with secret "secrets/data/gandi"}}{{.Data.data.API_KEY}}{{end}}"
EOH
destination= "secrets/gandi.env"
env = true
}
2022-04-24 10:47:41 +00:00
template{
data= <<EOH
[entryPoints]
2022-09-09 15:50:28 +00:00
[entrypoints.ssh]
address = ":2222"
2022-04-24 10:47:41 +00:00
[entryPoints.web]
address = ":80"
2022-05-23 17:48:35 +00:00
[entryPoints.web.http]
[entryPoints.web.http.redirections]
[entryPoints.web.http.redirections.entryPoint]
to = "websecure"
scheme = "https"
2022-04-24 10:47:41 +00:00
[entryPoints.websecure]
address = ":443"
[entryPoints.traefik]
address = ":9080"
[http.middlewares]
[http.middlewares.https-redirect.redirectscheme]
scheme = "https"
[providers.consulCatalog]
exposedByDefault = false
[providers.consulCatalog.endpoint]
2022-06-20 19:54:45 +00:00
address = "{{{env "NOMAD_IP_admin"}}}:8500"
2022-04-24 10:47:41 +00:00
[log]
2022-05-26 12:18:52 +00:00
[accessLog]
2022-04-24 10:47:41 +00:00
[api]
dashboard = true
insecure = true
[ping]
2022-04-24 20:19:18 +00:00
[certificatesResolvers.myresolver.acme]
email = "vincent@ducamps.win"
storage = "acme.json"
[certificatesResolvers.myresolver.acme.httpChallenge]
entryPoint= "web"
2022-05-13 09:43:07 +00:00
[metrics]
[metrics.prometheus]
2022-04-24 10:47:41 +00:00
EOH
destination = "local/traefik.toml"
env = false
change_mode = "noop"
left_delimiter = "{{{"
right_delimiter = "}}}"
}
2022-05-12 09:36:04 +00:00
resources {
memory = 200
}
2022-04-24 10:47:41 +00:00
}
}
}