# see https://blog.ediri.io/kube-prometheus-stack-and-argocd-23-how-to-remove-a-workaround
local helmapp = import "../../_templates/argo_helm_app.libsonnet";
local argoapp = import "../../_templates/argo_app.libsonnet";

local vars = {
	"version": "34.9.1",
	"namespace": "metrics"
};

[
argoapp + {
  name:: "prometheus-crds",
  namespace:: vars.namespace,
  repo:: "https://github.com/prometheus-community/helm-charts.git",
  path:: "charts/kube-prometheus-stack/crds/",
  version:: "kube-prometheus-stack-" + vars.version,
  syncOptions:: ["CreateNamespace=true", "Replace=true"],
  sync_wave:: -1,
},
helmapp + {
  name:: "prometheus-grafana",
  namespace: vars.namespace,
  repo:: "https://prometheus-community.github.io/helm-charts",
  chart:: "kube-prometheus-stack",
  version:: vars.version,
  skipCrds:: true,
  values:: |||
    kubeProxy:
      enabled: false
    kubeScheduler:
      enabled: false
    kubeControllerManager:
      enabled: false
    alertmanager:
      config:
        global:
          resolve_timeout: 5m
        route:
          group_by: ['alertname', 'cluster']
          group_wait: 30s
          group_interval: 5m
          repeat_interval: 12h
          receiver: 'pushover'
          routes:
            - receiver: 'null'
              matchers:
                - alertname="Watchdog"
            - receiver: 'null'
              matchers:
                - alertname="InfoInhibitor"
        receivers:
          - name: 'null'
          - name: 'pushover'
            pushover_configs:
              - user_key: x9PipXt1zGOU31OJH9Osv18BFrlRhw
                token: aqvce1uukerhxhayxdq85wgtdh2c5r
    prometheus:
      prometheusSpec:
        storageSpec:
          volumeClaimTemplate:
            spec:
              accessModes: ["ReadWriteOnce"]
              resources:
                requests:
                  storage: 10Gi
  |||
}
]