78 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			HCL
		
	
	
	
			
		
		
	
	
			78 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			HCL
		
	
	
	
| job "traefik" {
 | |
|   datacenters = ["dc1"]
 | |
|   type        = "service"
 | |
| 
 | |
|   update {
 | |
|     strategy     = "canary"
 | |
|     max_parallel = 1
 | |
|     min_healthy_time = "10s"
 | |
|     healthy_deadline = "3m"
 | |
|     auto_revert = true
 | |
|   }
 | |
| 
 | |
|   group "traefik" {
 | |
|     count = 3
 | |
| 
 | |
|     restart {
 | |
|       attempts = 3
 | |
|       interval = "30m"
 | |
|       delay    = "15s"
 | |
|       mode     = "fail"
 | |
|     }
 | |
| 
 | |
|     network {
 | |
|       port "http" {
 | |
|         static = 80
 | |
|       }
 | |
|       port "https" {
 | |
|         static = 443
 | |
|       }
 | |
|       port "api" {
 | |
|         static = 8080
 | |
|       }
 | |
|     }
 | |
| 
 | |
|     task "traefik" {
 | |
|       driver = "podman"
 | |
| 
 | |
|       config {
 | |
|         image = "traefik:latest"
 | |
|         ports = ["http", "https", "api"]
 | |
|         volumes = [
 | |
|           "/var/run/docker.sock:/var/run/docker.sock:ro",  # 如果需要与Docker集成
 | |
|           "/root/mgmt/configs/traefik.yml:/etc/traefik/traefik.yml:ro",
 | |
|           "/root/mgmt/configs/dynamic:/etc/traefik/dynamic:ro"
 | |
|         ]
 | |
|       }
 | |
| 
 | |
|       env {
 | |
|         NOMAD_ADDR = "http://${attr.unique.network.ip-address}:4646"
 | |
|         CONSUL_HTTP_ADDR = "http://${attr.unique.network.ip-address}:8500"
 | |
|       }
 | |
| 
 | |
|       resources {
 | |
|         cpu    = 200
 | |
|         memory = 256
 | |
|       }
 | |
| 
 | |
|       service {
 | |
|         name = "traefik"
 | |
|         port = "http"
 | |
|         tags = [
 | |
|           "traefik.enable=true",
 | |
|           "traefik.http.routers.api.rule=Host(`traefik.service.consul`)",
 | |
|           "traefik.http.routers.api.service=api@internal",
 | |
|           "traefik.http.routers.api.entrypoints=api",
 | |
|           "traefik.http.services.api.loadbalancer.server.port=8080"
 | |
|         ]
 | |
|         
 | |
|         check {
 | |
|           type     = "http"
 | |
|           path     = "/ping"
 | |
|           interval = "10s"
 | |
|           timeout  = "2s"
 | |
|         }
 | |
|       }
 | |
|     }
 | |
|   }
 | |
| } |