github.com/yankunsam/loki/v2@v2.6.3-0.20220817130409-389df5235c27/tools/dev/k3d/environments/loki-distributed/main.jsonnet (about)

     1  local k = import 'github.com/grafana/jsonnet-libs/ksonnet-util/kausal.libsonnet';
     2  local tanka = import 'github.com/grafana/jsonnet-libs/tanka-util/main.libsonnet';
     3  local spec = (import './spec.json').spec;
     4  
     5  local jaeger = import 'jaeger/jaeger.libsonnet';
     6  local grafana = import 'grafana/grafana.libsonnet';
     7  local prometheus = import 'prometheus/prometheus.libsonnet';
     8  local promtail = import 'promtail/promtail.libsonnet';
     9  
    10  local helm = tanka.helm.new(std.thisFile) {
    11    template(name, chart, conf={})::
    12      std.native('helmTemplate')(name, chart, conf { calledFrom: std.thisFile }),
    13  };
    14  local clusterName = 'loki-distributed';
    15  local normalizedClusterName = std.strReplace(clusterName, '-', '_');
    16  
    17  grafana + prometheus + promtail + jaeger {
    18    local gatewayName = self.loki.service_loki_distributed_gateway.metadata.name,
    19    local gatewayHost = '%s' % gatewayName,
    20    local gatewayUrl = 'http://%s' % gatewayHost,
    21    local jaegerQueryName = self.jaeger.query_service.metadata.name,
    22    local jaegerQueryUrl = 'http://%s' % jaegerQueryName,
    23    local jaegerAgentName = self.jaeger.agent_service.metadata.name,
    24    local jaegerAgentUrl = 'http://%s' % jaegerAgentName,
    25    local prometheusServerName = self.prometheus.service_prometheus_server.metadata.name,
    26    local prometheusUrl = 'http://%s' % prometheusServerName,
    27    local namespace = spec.namespace,
    28  
    29    _config+:: {
    30      clusterName: clusterName,
    31      gatewayName: gatewayName,
    32      gatewayHost: gatewayHost,
    33      gelUrl: gatewayUrl,
    34      jaegerAgentName: jaegerAgentName,
    35      jaegerAgentPort: 6831,
    36      namespace: namespace,
    37      adminToken: 'gel-admin-token',
    38  
    39      grafana: {
    40        datasources: [
    41          {
    42            name: 'Prometheus',
    43            type: 'prometheus',
    44            access: 'proxy',
    45            url: prometheusUrl,
    46          },
    47          {
    48            name: 'Jaeger',
    49            type: 'jaeger',
    50            access: 'proxy',
    51            url: jaegerQueryUrl,
    52            uid: 'jaeger_uid',
    53          },
    54          {
    55            name: 'Loki',
    56            type: 'loki',
    57            access: 'proxy',
    58            url: gatewayUrl,
    59            jsonData: {
    60              derivedFields: [
    61                {
    62                  datasourceUid: 'jaeger_uid',
    63                  matcherRegex: 'traceID=(\\w+)',
    64                  name: 'TraceID',
    65                  url: '$${__value.raw}',
    66                },
    67              ],
    68            },
    69          },
    70        ],
    71      },
    72    },
    73  
    74    minio: helm.template('minio', '../../charts/minio', {
    75      namespace: $._config.namespace,
    76      values: {
    77        accessKey: 'loki',
    78        rootUser: 'loki',
    79        secretKey: 'supersecret',
    80        rootPassword: 'supersecret',
    81        buckets: [
    82          {
    83            name: 'loki-data',
    84            policy: 'public',
    85            purge: false,
    86          },
    87        ],
    88        persistence: {
    89          enabled: true,
    90          'storage-class': 'local-path',
    91          size: '10Gi',
    92        },
    93      },
    94    }),
    95  
    96    local config = import './values/default/config.libsonnet',
    97    local values = (import './values/default/values.libsonnet').lokiValues(k.util.manifestYaml(config)),
    98  
    99    loki: helm.template($._config.clusterName, '../../charts/loki-distributed', {
   100      namespace: $._config.namespace,
   101      values: values {
   102        local registry = 'k3d-grafana:45629',
   103        loki+: {
   104          image: {
   105            registry: registry,
   106            repository: 'loki',
   107            tag: 'latest',
   108            pullPolicy: 'Always',
   109          },
   110        },
   111      },
   112    }) + {
   113      ['deployment_loki_distributed_%s' % [name]]+:
   114        k.apps.v1.deployment.mapContainers($._addJaegerEnvVars) +
   115        k.apps.v1.deployment.spec.template.metadata.withAnnotations($._prometheusAnnotations)
   116      for name in [
   117        'compactor',
   118        'distributor',
   119        'gateway',
   120        'query_frontend',
   121      ]
   122    } + {
   123      ['stateful_set_loki_distributed_%s' % [name]]+:
   124        k.apps.v1.statefulSet.mapContainers($._addJaegerEnvVars) +
   125        k.apps.v1.statefulSet.spec.template.metadata.withAnnotations($._prometheusAnnotations)
   126      for name in [
   127        'ingester',
   128        'querier',
   129      ]
   130    },
   131  }