apiVersion: argoproj.io/v1alpha1 kind: Application metadata: annotations: argocd.argoproj.io/sync-wave: "4" name: loki namespace: argocd spec: destination: namespace: monitoring server: https://kubernetes.default.svc project: default sources: - chart: loki helm: values: | deploymentMode: Monolithic loki: auth_enabled: false commonConfig: replication_factor: 1 schemaConfig: configs: - from: "2026-09-01" store: tsdb object_store: s3 schema: v13 index: prefix: loki_index_ period: 24h storage: type: s3 bucketNames: chunks: loki ruler: loki s3: endpoint: http://garage.garage.svc.cluster.local:3900 region: garage accessKeyId: ${LOKI_S3_ACCESS_KEY_ID} secretAccessKey: ${LOKI_S3_SECRET_ACCESS_KEY} s3ForcePathStyle: true insecure: true ingester: chunk_encoding: zstd compactor: retention_enabled: true delete_request_store: s3 limits_config: retention_period: 2160h singleBinary: replicas: 1 extraEnvFrom: - secretRef: name: loki-s3 persistence: size: 10Gi resources: limits: cpu: "1" memory: 2Gi requests: cpu: 100m memory: 512Mi # Memory limits sit ~20% above memcached's allocation for connection overhead. chunksCache: allocatedMemory: 512 resources: limits: cpu: 500m memory: 614Mi requests: cpu: 50m memory: 614Mi resultsCache: allocatedMemory: 128 resources: limits: cpu: 500m memory: 154Mi requests: cpu: 50m memory: 154Mi memcachedExporter: resources: limits: cpu: 100m memory: 64Mi requests: cpu: 10m memory: 16Mi # Loki's rules sidecar sidecar: resources: limits: cpu: 100m memory: 256Mi requests: cpu: 10m memory: 64Mi # Grafana and Alloy talk to Loki directly, there is a single tenant. gateway: enabled: false lokiCanary: enabled: false test: enabled: false backend: replicas: 0 read: replicas: 0 write: replicas: 0 repoURL: https://grafana-community.github.io/helm-charts targetRevision: 18.13.7 - path: add-ons/loki repoURL: https://gitea.whyredfire.dev/whyredfire/gitops.git targetRevision: main syncPolicy: automated: prune: true selfHeal: true syncOptions: - CreateNamespace=true - ServerSideApply=true