---
# yaml-language-server: $schema=https://raw.githubusercontent.com/fluxcd-community/flux2-schemas/main/helmrelease-helm-v2beta1.json
apiVersion: helm.toolkit.fluxcd.io/v2beta1
kind: HelmRelease
metadata:
  name: thanos
  namespace: monitoring
spec:
  interval: 30m
  timeout: 15m
  chart:
    spec:
      chart: thanos
      version: 12.20.0
      sourceRef:
        kind: HelmRepository
        name: bitnami
        namespace: flux-system
  maxHistory: 2
  install:
    createNamespace: true
    remediation:
      retries: 3
  upgrade:
    cleanupOnFail: true
    remediation:
      retries: 3
  uninstall:
    keepHistory: false
  values:
    image:
      registry: quay.io
      repository: thanos/thanos
      tag: v0.33.0
    existingObjstoreSecret: thanos-s3-secret
    queryFrontend:
      enabled: true
      replicaCount: 3
      ingress:
        enabled: true
        ingressClassName: hsn-nginx
        annotations:
          external-dns.alpha.kubernetes.io/cloudflare-proxied: "true"
        hostname: &host thanos-query-frontend.hsn.dev
        tls: true
        extraTls:
          - hosts:
              - *host
    query:
      enabled: true
      replicaCount: 3
      replicaLabel: ["__replica__"]
      dnsDiscovery:
        sidecarsService: kube-prometheus-stack-thanos-discovery
        sidecarsNamespace: monitoring
    bucketweb:
      enabled: true
      replicaCount: 3
    compactor:
      enabled: true
      extraFlags:
        - --compact.concurrency=4
        - --delete-delay=30m
      retentionResolutionRaw: 30d
      retentionResolution5m: 60d
      retentionResolution1h: 90d
      persistence:
        enabled: true
        storageClass: ceph-block
        size: 20Gi
    storegateway:
      enabled: true
      replicaCount: 3
      persistence:
        enabled: true
        storageClass: ceph-block
        size: 10Gi
    ruler:
      enabled: true
      replicaCount: 3
      replicaLabel: __replica__
      alertmanagers: ["http://kube-prometheus-stack-alertmanager.monitoring.svc.cluster.local:9093"]
      extraFlags: ["--web.prefix-header=X-Forwarded-Prefix"]
      config: |-
        groups:
          - name: PrometheusWatcher
            rules:
              - alert: PrometheusDown
                annotations:
                  summary: A Prometheus has disappeared from Prometheus target discovery
                expr: absent(up{job="kube-prometheus-stack-prometheus"})
                for: 5m
                labels:
                  severity: critical
      persistence:
        enabled: true
        storageClass: ceph-block
        size: 5Gi
    metrics:
      enabled: true
      serviceMonitor:
        enabled: true