apiVersion: helm.cattle.io/v1 kind: HelmChart metadata: name: kube-prometheus-stack namespace: kube-system # The controller looks here, but we will deploy to 'monitoring' spec: chart: kube-prometheus-stack repo: https://prometheus-community.github.io/helm-charts targetNamespace: monitoring createNamespace: true valuesContent: |- kubeControllerManager: enabled: false kubeScheduler: enabled: false kubeProxy: enabled: false prometheus: prometheusSpec: serviceMonitorSelectorNilUsesHelmValues: false retention: 10d externalUrl: http://prometheus.home.nest storageSpec: volumeClaimTemplate: spec: storageClassName: "" resources: requests: storage: 20Gi selector: matchLabels: app: prometheus-data alertmanager: config: global: resolve_timeout: 5m route: group_by: ['alertname', 'cluster', 'service'] group_wait: 30s group_interval: 5m repeat_interval: 12h receiver: 'discord-notifications' # Point the default route here routes: - matchers: - alertname = Watchdog receiver: 'null' # Inhibition rules reduce noise by silencing related alerts inhibit_rules: - source_matchers: [severity="critical"] target_matchers: [severity="warning"] equal: ['alertname', 'dev', 'instance'] receivers: - name: 'null' - name: 'discord-notifications' discord_configs: - webhook_url: 'https://discord.com/api/webhooks/1483240068197126300/zI_k1nEc8U8Fd0hiJc7gBG0TjklblmYrSDvpbTMiposGc32_0UREpLjch1FggFvluV3D' send_resolved: true # Formatting the message for better readability title: '{{ .Status | toUpper }}: {{ .GroupLabels.alertname }}' message: |- **Summary:** {{ range .Alerts }}{{ .Annotations.summary }}{{ end }} **Description:** {{ range .Alerts }}{{ .Annotations.description }}{{ end }} **Severity:** {{ range .Alerts }}{{ .Labels.severity }}{{ end }} alertmanagerSpec: externalUrl: http://alertmanager.home.nest storage: volumeClaimTemplate: spec: storageClassName: "" resources: requests: storage: 2Gi selector: matchLabels: app: alertmanager-data grafana: admin: existingSecret: "grafana-admin-credentials" userKey: admin-user passwordKey: admin-password podSecurityContext: runAsUser: 1000 runAsGroup: 1000 fsGroup: 1000 initChownData: enabled: false grafana.ini: server: domain: grafana.home.nest root_url: http://grafana.home.nest serve_from_sub_path: false persistence: enabled: true type: pvc storageClassName: grafana-nfs size: 5Gi finalizers: - kubernetes.io/pvc-protection selectorLabels: app: grafana-data