github.com/yankunsam/loki/v2@v2.6.3-0.20220817130409-389df5235c27/production/nomad/loki-simple/job.nomad.hcl (about)

     1  variable "version" {
     2    type        = string
     3    description = "Loki version"
     4    default     = "2.6.1"
     5  }
     6  
     7  job "loki" {
     8    datacenters = ["dc1"]
     9  
    10    group "read" {
    11      count = 1
    12  
    13      ephemeral_disk {
    14        size   = 1000
    15        sticky = true
    16      }
    17  
    18      network {
    19        port "http" {}
    20        port "grpc" {}
    21      }
    22  
    23      task "read" {
    24        driver = "docker"
    25        user   = "nobody"
    26  
    27        config {
    28          image = "grafana/loki:${var.version}"
    29  
    30          ports = [
    31            "http",
    32            "grpc",
    33          ]
    34  
    35          args = [
    36            "-target=read",
    37            "-config.file=/local/config.yml",
    38            "-config.expand-env=true",
    39          ]
    40        }
    41  
    42        template {
    43          data        = file("config.yml")
    44          destination = "local/config.yml"
    45        }
    46  
    47        template {
    48          data = <<-EOH
    49          S3_ACCESS_KEY_ID=<access_key>
    50          S3_SECRET_ACCESS_KEY=<secret_access_key>
    51          EOH
    52  
    53          destination = "secrets/s3.env"
    54          env         = true
    55        }
    56  
    57        service {
    58          name = "loki-read"
    59          port = "http"
    60  
    61          tags = [
    62            "traefik.enable=true",
    63            "traefik.http.routers.loki-read.entrypoints=https",
    64            "traefik.http.routers.loki-read.rule=Host(`loki-read.service.consul`)",
    65          ]
    66  
    67          check {
    68            name     = "Loki read"
    69            port     = "http"
    70            type     = "http"
    71            path     = "/ready"
    72            interval = "20s"
    73            timeout  = "1s"
    74  
    75            initial_status = "passing"
    76          }
    77        }
    78  
    79        resources {
    80          cpu    = 500
    81          memory = 256
    82        }
    83      }
    84    }
    85  
    86    group "write" {
    87      count = 2
    88  
    89      ephemeral_disk {
    90        size   = 1000
    91        sticky = true
    92      }
    93  
    94      network {
    95        port "http" {}
    96        port "grpc" {}
    97      }
    98  
    99      task "write" {
   100        driver = "docker"
   101        user   = "nobody"
   102  
   103        config {
   104          image = "grafana/loki:${var.version}"
   105  
   106          ports = [
   107            "http",
   108            "grpc",
   109          ]
   110  
   111          args = [
   112            "-target=write",
   113            "-config.file=/local/config.yml",
   114            "-config.expand-env=true",
   115          ]
   116        }
   117  
   118        template {
   119          data        = file("config.yml")
   120          destination = "local/config.yml"
   121        }
   122  
   123        template {
   124          data = <<-EOH
   125          S3_ACCESS_KEY_ID=<access_key>
   126          S3_SECRET_ACCESS_KEY=<secret_access_key>
   127          EOH
   128  
   129          destination = "secrets/s3.env"
   130          env         = true
   131        }
   132  
   133        service {
   134          name = "loki-write"
   135          port = "http"
   136  
   137          tags = [
   138            "traefik.enable=true",
   139            "traefik.http.routers.loki-write.entrypoints=https",
   140            "traefik.http.routers.loki-write.rule=Host(`loki-write.service.consul`)",
   141          ]
   142  
   143          check {
   144            name     = "Loki write"
   145            port     = "http"
   146            type     = "http"
   147            path     = "/ready"
   148            interval = "20s"
   149            timeout  = "1s"
   150  
   151            initial_status = "passing"
   152          }
   153        }
   154  
   155        resources {
   156          cpu    = 500
   157          memory = 256
   158        }
   159      }
   160    }
   161  }