--- # yaml-language-server: $schema=https://kubernetes-schemas.pages.dev/helm.toolkit.fluxcd.io/helmrelease_v2beta2.json apiVersion: helm.toolkit.fluxcd.io/v2beta2 kind: HelmRelease metadata: name: loki namespace: monitoring spec: interval: 30m timeout: 15m chart: spec: chart: loki version: 5.43.3 sourceRef: kind: HelmRepository name: grafana namespace: flux-system maxHistory: 2 install: remediation: retries: 3 upgrade: cleanupOnFail: true remediation: retries: 3 uninstall: keepHistory: false dependsOn: - name: rook-ceph-cluster namespace: rook-ceph values: loki: structuredConfig: auth_enabled: false server: log_level: info http_listen_port: 3100 grpc_listen_port: 9095 memberlist: join_members: ["loki-memberlist"] limits_config: retention_period: 14d enforce_metric_name: false reject_old_samples: true reject_old_samples_max_age: 168h max_cache_freshness_per_query: 10m split_queries_by_interval: 15m ingestion_rate_mb: 50 ingestion_burst_size_mb: 1000 per_stream_rate_limit: 5MB per_stream_rate_limit_burst: 20MB shard_streams: enabled: true schema_config: configs: - from: "2022-01-11" # quote store: boltdb-shipper object_store: s3 schema: v12 index: prefix: loki_index_ period: 24h common: path_prefix: /var/loki replication_factor: 2 storage: s3: s3: null insecure: true s3forcepathstyle: true ring: kvstore: store: memberlist ruler: enable_api: true enable_alertmanager_v2: true alertmanager_url: http://alertmanager-operated.monitoring.svc.cluster.local:9093 storage: type: local local: directory: /rules rule_path: /rules ring: kvstore: store: memberlist distributor: ring: kvstore: store: memberlist compactor: working_directory: /var/loki/boltdb-shipper-compactor shared_store: s3 compaction_interval: 10m retention_enabled: true retention_delete_delay: 2h retention_delete_worker_count: 150 ingester: max_chunk_age: 1h lifecycler: ring: kvstore: store: memberlist analytics: reporting_enabled: false gateway: replicas: 2 affinity: | podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - weight: 1 podAffinityTerm: labelSelector: matchLabels: {{- include "loki.gatewaySelectorLabels" . | nindent 12 }} topologyKey: kubernetes.io/hostname image: registry: ghcr.io repository: nginxinc/nginx-unprivileged tag: 1.25-alpine ingress: enabled: true ingressClassName: "nginx" annotations: hajimari.io/enable: "false" hosts: - host: &host loki.${SECRET_CLUSTER_DOMAIN} paths: - path: / pathType: Prefix tls: - hosts: - *host read: replicas: 2 affinity: | podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - weight: 1 podAffinityTerm: labelSelector: matchLabels: {{- include "loki.writeSelectorLabels" . | nindent 12 }} topologyKey: kubernetes.io/hostname persistence: storageClass: rook-ceph-block extraVolumeMounts: - name: rules mountPath: /rules extraVolumes: - name: rules emptyDir: {} write: replicas: 2 affinity: | podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - weight: 1 podAffinityTerm: labelSelector: matchLabels: {{- include "loki.writeSelectorLabels" . | nindent 12 }} topologyKey: kubernetes.io/hostname persistence: size: 20Gi storageClass: rook-ceph-block backend: replicas: 2 affinity: | podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - weight: 1 podAffinityTerm: labelSelector: matchLabels: {{- include "loki.writeSelectorLabels" . | nindent 12 }} topologyKey: kubernetes.io/hostname persistence: storageClass: rook-ceph-block extraVolumeMounts: - name: rules mountPath: /rules/fake - name: scratch mountPath: /tmp/scratch extraVolumes: - name: rules configMap: name: loki-alerting-rules - name: scratch emptyDir: {} monitoring: dashboards: annotations: grafana_folder: Loki serviceMonitor: enabled: false metricsInstance: enabled: false selfMonitoring: enabled: false grafanaAgent: installOperator: false lokiCanary: enabled: false test: enabled: false valuesFrom: - targetPath: loki.structuredConfig.common.storage.s3.bucketnames kind: ConfigMap name: loki-bucket valuesKey: BUCKET_NAME - targetPath: loki.structuredConfig.common.storage.s3.endpoint kind: ConfigMap name: loki-bucket valuesKey: BUCKET_HOST - targetPath: loki.structuredConfig.common.storage.s3.access_key_id kind: Secret name: loki-bucket valuesKey: AWS_ACCESS_KEY_ID - targetPath: loki.structuredConfig.common.storage.s3.secret_access_key kind: Secret name: loki-bucket valuesKey: AWS_SECRET_ACCESS_KEY