98 lines
1.7 KiB
HCL
98 lines
1.7 KiB
HCL
job "traefik-consul-lb" {
|
|
datacenters = ["dc1"]
|
|
type = "service"
|
|
|
|
group "traefik" {
|
|
count = 1
|
|
|
|
constraint {
|
|
attribute = "${node.unique.name}"
|
|
value = "hcp1"
|
|
}
|
|
|
|
update {
|
|
min_healthy_time = "5s"
|
|
healthy_deadline = "10m"
|
|
progress_deadline = "15m"
|
|
auto_revert = false
|
|
}
|
|
|
|
network {
|
|
mode = "host"
|
|
port "http" {
|
|
static = 80
|
|
host_network = "tailscale0"
|
|
}
|
|
port "traefik" {
|
|
static = 8080
|
|
host_network = "tailscale0"
|
|
}
|
|
}
|
|
|
|
task "traefik" {
|
|
driver = "exec"
|
|
|
|
config {
|
|
command = "/usr/local/bin/traefik"
|
|
args = [
|
|
"--configfile=/local/traefik.yml"
|
|
]
|
|
}
|
|
|
|
template {
|
|
data = <<EOF
|
|
api:
|
|
dashboard: true
|
|
insecure: true
|
|
|
|
entryPoints:
|
|
web:
|
|
address: "100.97.62.111:80"
|
|
traefik:
|
|
address: "100.97.62.111:8080"
|
|
|
|
providers:
|
|
file:
|
|
filename: /local/dynamic.yml
|
|
watch: true
|
|
|
|
log:
|
|
level: INFO
|
|
EOF
|
|
destination = "local/traefik.yml"
|
|
}
|
|
|
|
template {
|
|
data = <<EOF
|
|
http:
|
|
services:
|
|
consul-cluster:
|
|
loadBalancer:
|
|
servers:
|
|
- url: "http://warden.tailnet-68f9.ts.net:8500" # 北京,优先
|
|
- url: "http://master.tailnet-68f9.ts.net:8500" # 备用
|
|
- url: "http://ash3c.tailnet-68f9.ts.net:8500" # 备用
|
|
healthCheck:
|
|
path: "/v1/status/leader"
|
|
interval: "30s"
|
|
timeout: "15s"
|
|
|
|
routers:
|
|
consul-api:
|
|
rule: "PathPrefix(`/`)"
|
|
service: consul-cluster
|
|
entryPoints:
|
|
- web
|
|
EOF
|
|
destination = "local/dynamic.yml"
|
|
}
|
|
|
|
resources {
|
|
cpu = 500
|
|
memory = 512
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|