---
# yaml-language-server: $schema=https://ks.hsn.dev/helm.toolkit.fluxcd.io/helmrelease_v2beta2.json
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
  name: loki
spec:
  interval: 30m
  timeout: 15m
  chart:
    spec:
      chart: loki
      version: 6.6.5
      sourceRef:
        kind: HelmRepository
        name: grafana
        namespace: flux-system
  install:
    remediation:
      retries: 3
  upgrade:
    cleanupOnFail: true
    remediation:
      strategy: uninstall
      retries: 3
  valuesFrom:
    - targetPath: loki.storage.bucketNames.chunks
      kind: Secret
      name: loki-secret
      valuesKey: S3_BUCKET
    - targetPath: loki.storage.s3.endpoint
      kind: Secret
      name: loki-secret
      valuesKey: S3_HOST
    - targetPath: loki.storage.s3.region
      kind: Secret
      name: loki-secret
      valuesKey: S3_REGION
    - targetPath: loki.storage.s3.accessKeyId
      kind: Secret
      name: loki-secret
      valuesKey: S3_ACCESS_KEY
    - targetPath: loki.storage.s3.secretAccessKey
      kind: Secret
      name: loki-secret
      valuesKey: S3_SECRET_KEY
  values:
    deploymentMode: SimpleScalable
    loki:
      podAnnotations:
        secret.reloader.stakater.com/reload: loki-secret
      ingester:
        chunk_encoding: snappy
      storage:
        type: s3
        s3:
          s3ForcePathStyle: true
          insecure: true
      schemaConfig:
        configs:
          - from: "2024-04-01"
            store: tsdb
            object_store: s3
            schema: v13
            index:
              prefix: loki_index_
              period: 24h
      structuredConfig:
        auth_enabled: false
        server:
          log_level: info
          http_listen_port: 3100
          grpc_listen_port: 9095
          grpc_server_max_recv_msg_size: 8388608
          grpc_server_max_send_msg_size: 8388608
        limits_config:
          ingestion_burst_size_mb: 128
          ingestion_rate_mb: 64
          max_query_parallelism: 100
          per_stream_rate_limit: 64M
          per_stream_rate_limit_burst: 128M
          reject_old_samples: true
          reject_old_samples_max_age: 168h
          retention_period: 30d
          shard_streams:
            enabled: true
          split_queries_by_interval: 1h
        query_scheduler:
          max_outstanding_requests_per_tenant: 4096
        frontend:
          max_outstanding_per_tenant: 4096
        ruler:
          enable_api: true
          enable_alertmanager_v2: true
          alertmanager_url: http://alertmanager-operated.observability.svc.cluster.local:9093
          storage:
            type: local
            local:
              directory: /rules
          rule_path: /rules/fake
        analytics:
          reporting_enabled: false
    backend:
      replicas: 1
      persistence:
        size: 20Gi
        storageClass: openebs-hostpath
    gateway:
      replicas: 1
      image:
        registry: ghcr.io
      ingress:
        enabled: true
        ingressClassName: internal-nginx
        hosts:
          - host: &host loki.jahanson.tech
            paths:
              - path: /
                pathType: Prefix
        tls:
          - hosts: [*host]
    read:
      replicas: 1
    write:
      replicas: 1
      persistence:
        size: 20Gi
        storageClass: openebs-hostpath
    sidecar:
      image:
        repository: ghcr.io/kiwigrid/k8s-sidecar
      rules:
        searchNamespace: ALL
        folder: /rules/fake
    lokiCanary:
      enabled: false
    test:
      enabled: false