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 }