Skip to content

Add kube-state-metrics, node-exporter, and prometheus-adapter to obse…#3334

Open
axeII wants to merge 1 commit into
mainfrom
ref/monitoring
Open

Add kube-state-metrics, node-exporter, and prometheus-adapter to obse…#3334
axeII wants to merge 1 commit into
mainfrom
ref/monitoring

Conversation

@axeII
Copy link
Copy Markdown
Owner

@axeII axeII commented May 1, 2026

…rvability stack

  • Introduced kube-state-metrics with its Kustomization, HelmRelease, and OCIRepository configurations.
  • Added node-exporter with corresponding Kustomization, HelmRelease, and OCIRepository files.
  • Integrated prometheus-adapter into the observability stack with its own Kustomization, HelmRelease, and OCIRepository.
  • Updated the main observability Kustomization to include kube-state-metrics, node-exporter, and prometheus-adapter.
  • Refactored victoria-logs and victoria-metrics configurations to use OCIRepository and updated HelmRelease specifications.
  • Added Grafana dashboards for smartctl-exporter and victoria-metrics.
  • Created collector for victoria-logs with HelmRelease and repository configurations.
  • Removed deprecated route configuration for victoria-logs.

What's Changed

Type of Change

  • 🆕 New app/service
  • ⬆️ Version upgrade
  • 🔧 Config change
  • 🐛 Bug fix
  • 🧹 Cleanup

Notes and apps affected

…rvability stack

- Introduced kube-state-metrics with its Kustomization, HelmRelease, and OCIRepository configurations.
- Added node-exporter with corresponding Kustomization, HelmRelease, and OCIRepository files.
- Integrated prometheus-adapter into the observability stack with its own Kustomization, HelmRelease, and OCIRepository.
- Updated the main observability Kustomization to include kube-state-metrics, node-exporter, and prometheus-adapter.
- Refactored victoria-logs and victoria-metrics configurations to use OCIRepository and updated HelmRelease specifications.
- Added Grafana dashboards for smartctl-exporter and victoria-metrics.
- Created collector for victoria-logs with HelmRelease and repository configurations.
- Removed deprecated route configuration for victoria-logs.
@bot-akira
Copy link
Copy Markdown
Contributor

bot-akira Bot commented May 1, 2026

--- kubernetes/apps/observability/prometheus-operator-crds/app Kustomization: observability/prometheus-operator-crds HelmRelease: observability/prometheus-operator-crds

+++ kubernetes/apps/observability/prometheus-operator-crds/app Kustomization: observability/prometheus-operator-crds HelmRelease: observability/prometheus-operator-crds

@@ -6,23 +6,11 @@

     app.kubernetes.io/name: prometheus-operator-crds
     kustomize.toolkit.fluxcd.io/name: prometheus-operator-crds
     kustomize.toolkit.fluxcd.io/namespace: observability
   name: prometheus-operator-crds
   namespace: observability
 spec:
-  chart:
-    spec:
-      chart: prometheus-operator-crds
-      sourceRef:
-        kind: HelmRepository
-        name: prometheus-community
-        namespace: flux-system
-      version: 28.0.1
-  install:
-    remediation:
-      retries: 3
+  chartRef:
+    kind: OCIRepository
+    name: prometheus-operator-crds
   interval: 1h
-  upgrade:
-    cleanupOnFail: true
-    remediation:
-      retries: 3
 
--- kubernetes/apps/observability/prometheus-operator-crds/app Kustomization: observability/prometheus-operator-crds OCIRepository: observability/prometheus-operator-crds

+++ kubernetes/apps/observability/prometheus-operator-crds/app Kustomization: observability/prometheus-operator-crds OCIRepository: observability/prometheus-operator-crds

@@ -0,0 +1,19 @@

+---
+apiVersion: source.toolkit.fluxcd.io/v1
+kind: OCIRepository
+metadata:
+  labels:
+    app.kubernetes.io/name: prometheus-operator-crds
+    kustomize.toolkit.fluxcd.io/name: prometheus-operator-crds
+    kustomize.toolkit.fluxcd.io/namespace: observability
+  name: prometheus-operator-crds
+  namespace: observability
+spec:
+  interval: 15m
+  layerSelector:
+    mediaType: application/vnd.cncf.helm.chart.content.v1.tar+gzip
+    operation: copy
+  ref:
+    tag: 28.0.1
+  url: oci://ghcr.io/prometheus-community/charts/prometheus-operator-crds
+
--- kubernetes/apps Kustomization: flux-system/cluster-apps Kustomization: observability/alloy

+++ kubernetes/apps Kustomization: flux-system/cluster-apps Kustomization: observability/alloy

@@ -1,27 +0,0 @@

----
-apiVersion: kustomize.toolkit.fluxcd.io/v1
-kind: Kustomization
-metadata:
-  labels:
-    kustomize.toolkit.fluxcd.io/name: cluster-apps
-    kustomize.toolkit.fluxcd.io/namespace: flux-system
-  name: alloy
-  namespace: observability
-spec:
-  commonMetadata:
-    labels:
-      app.kubernetes.io/name: alloy
-  dependsOn:
-  - name: victoria-logs
-  interval: 30m
-  path: ./kubernetes/apps/observability/alloy/app
-  prune: true
-  retryInterval: 1m
-  sourceRef:
-    kind: GitRepository
-    name: flux-system
-    namespace: flux-system
-  targetNamespace: observability
-  timeout: 5m
-  wait: true
-
--- kubernetes/apps Kustomization: flux-system/cluster-apps Kustomization: observability/grafana

+++ kubernetes/apps Kustomization: flux-system/cluster-apps Kustomization: observability/grafana

@@ -8,15 +8,12 @@

   name: grafana
   namespace: observability
 spec:
   commonMetadata:
     labels:
       app.kubernetes.io/name: grafana
-  dependsOn:
-  - name: external-secrets-stores
-    namespace: kube-system
   interval: 30m
   path: ./kubernetes/apps/observability/grafana/app
   prune: true
   retryInterval: 1m
   sourceRef:
     kind: GitRepository
--- kubernetes/apps Kustomization: flux-system/cluster-apps Kustomization: observability/grafana-instance

+++ kubernetes/apps Kustomization: flux-system/cluster-apps Kustomization: observability/grafana-instance

@@ -0,0 +1,31 @@

+---
+apiVersion: kustomize.toolkit.fluxcd.io/v1
+kind: Kustomization
+metadata:
+  labels:
+    kustomize.toolkit.fluxcd.io/name: cluster-apps
+    kustomize.toolkit.fluxcd.io/namespace: flux-system
+  name: grafana-instance
+  namespace: observability
+spec:
+  commonMetadata:
+    labels:
+      app.kubernetes.io/name: grafana-instance
+  dependsOn:
+  - name: grafana
+  - name: external-secrets-stores
+    namespace: kube-system
+  - name: rook-ceph-cluster
+    namespace: rook-ceph
+  interval: 30m
+  path: ./kubernetes/apps/observability/grafana/instance
+  prune: true
+  retryInterval: 1m
+  sourceRef:
+    kind: GitRepository
+    name: flux-system
+    namespace: flux-system
+  targetNamespace: observability
+  timeout: 5m
+  wait: false
+
--- kubernetes/apps Kustomization: flux-system/cluster-apps Kustomization: observability/kube-state-metrics

+++ kubernetes/apps Kustomization: flux-system/cluster-apps Kustomization: observability/kube-state-metrics

@@ -0,0 +1,29 @@

+---
+apiVersion: kustomize.toolkit.fluxcd.io/v1
+kind: Kustomization
+metadata:
+  labels:
+    kustomize.toolkit.fluxcd.io/name: cluster-apps
+    kustomize.toolkit.fluxcd.io/namespace: flux-system
+  name: kube-state-metrics
+  namespace: observability
+spec:
+  commonMetadata:
+    labels:
+      app.kubernetes.io/name: kube-state-metrics
+  healthChecks:
+  - apiVersion: helm.toolkit.fluxcd.io/v2
+    kind: HelmRelease
+    name: kube-state-metrics
+    namespace: observability
+  interval: 1h
+  path: ./kubernetes/apps/observability/kube-state-metrics/app
+  prune: true
+  retryInterval: 2m
+  sourceRef:
+    kind: GitRepository
+    name: flux-system
+    namespace: flux-system
+  targetNamespace: observability
+  timeout: 5m
+
--- kubernetes/apps Kustomization: flux-system/cluster-apps Kustomization: observability/node-exporter

+++ kubernetes/apps Kustomization: flux-system/cluster-apps Kustomization: observability/node-exporter

@@ -0,0 +1,29 @@

+---
+apiVersion: kustomize.toolkit.fluxcd.io/v1
+kind: Kustomization
+metadata:
+  labels:
+    kustomize.toolkit.fluxcd.io/name: cluster-apps
+    kustomize.toolkit.fluxcd.io/namespace: flux-system
+  name: node-exporter
+  namespace: observability
+spec:
+  commonMetadata:
+    labels:
+      app.kubernetes.io/name: node-exporter
+  healthChecks:
+  - apiVersion: helm.toolkit.fluxcd.io/v2
+    kind: HelmRelease
+    name: node-exporter
+    namespace: observability
+  interval: 1h
+  path: ./kubernetes/apps/observability/node-exporter/app
+  prune: true
+  retryInterval: 2m
+  sourceRef:
+    kind: GitRepository
+    name: flux-system
+    namespace: flux-system
+  targetNamespace: observability
+  timeout: 5m
+
--- kubernetes/apps Kustomization: flux-system/cluster-apps Kustomization: observability/prometheus-adapter

+++ kubernetes/apps Kustomization: flux-system/cluster-apps Kustomization: observability/prometheus-adapter

@@ -0,0 +1,29 @@

+---
+apiVersion: kustomize.toolkit.fluxcd.io/v1
+kind: Kustomization
+metadata:
+  labels:
+    kustomize.toolkit.fluxcd.io/name: cluster-apps
+    kustomize.toolkit.fluxcd.io/namespace: flux-system
+  name: prometheus-adapter
+  namespace: observability
+spec:
+  commonMetadata:
+    labels:
+      app.kubernetes.io/name: prometheus-adapter
+  healthChecks:
+  - apiVersion: helm.toolkit.fluxcd.io/v2
+    kind: HelmRelease
+    name: prometheus-adapter
+    namespace: observability
+  interval: 1h
+  path: ./kubernetes/apps/observability/prometheus-adapter/app
+  prune: true
+  retryInterval: 2m
+  sourceRef:
+    kind: GitRepository
+    name: flux-system
+    namespace: flux-system
+  targetNamespace: observability
+  timeout: 5m
+
--- kubernetes/apps Kustomization: flux-system/cluster-apps Kustomization: observability/smartctl-exporter

+++ kubernetes/apps Kustomization: flux-system/cluster-apps Kustomization: observability/smartctl-exporter

@@ -0,0 +1,29 @@

+---
+apiVersion: kustomize.toolkit.fluxcd.io/v1
+kind: Kustomization
+metadata:
+  labels:
+    kustomize.toolkit.fluxcd.io/name: cluster-apps
+    kustomize.toolkit.fluxcd.io/namespace: flux-system
+  name: smartctl-exporter
+  namespace: observability
+spec:
+  commonMetadata:
+    labels:
+      app.kubernetes.io/name: smartctl-exporter
+  healthChecks:
+  - apiVersion: helm.toolkit.fluxcd.io/v2
+    kind: HelmRelease
+    name: smartctl-exporter
+    namespace: observability
+  interval: 1h
+  path: ./kubernetes/apps/observability/smartctl-exporter/app
+  prune: true
+  retryInterval: 2m
+  sourceRef:
+    kind: GitRepository
+    name: flux-system
+    namespace: flux-system
+  targetNamespace: observability
+  timeout: 5m
+
--- kubernetes/apps Kustomization: flux-system/cluster-apps Kustomization: observability/victoria-logs-collector

+++ kubernetes/apps Kustomization: flux-system/cluster-apps Kustomization: observability/victoria-logs-collector

@@ -0,0 +1,27 @@

+---
+apiVersion: kustomize.toolkit.fluxcd.io/v1
+kind: Kustomization
+metadata:
+  labels:
+    kustomize.toolkit.fluxcd.io/name: cluster-apps
+    kustomize.toolkit.fluxcd.io/namespace: flux-system
+  name: victoria-logs-collector
+  namespace: observability
+spec:
+  commonMetadata:
+    labels:
+      app.kubernetes.io/name: victoria-logs-collector
+  dependsOn:
+  - name: victoria-logs
+  interval: 30m
+  path: ./kubernetes/apps/observability/victoria-logs/collector
+  prune: true
+  retryInterval: 1m
+  sourceRef:
+    kind: GitRepository
+    name: flux-system
+    namespace: flux-system
+  targetNamespace: observability
+  timeout: 5m
+  wait: false
+
--- kubernetes/apps/observability/victoria-metrics/app Kustomization: observability/victoria-metrics HelmRelease: observability/victoria-metrics

+++ kubernetes/apps/observability/victoria-metrics/app Kustomization: observability/victoria-metrics HelmRelease: observability/victoria-metrics

@@ -6,87 +6,98 @@

     app.kubernetes.io/name: victoria-metrics
     kustomize.toolkit.fluxcd.io/name: victoria-metrics
     kustomize.toolkit.fluxcd.io/namespace: observability
   name: victoria-metrics
   namespace: observability
 spec:
-  chart:
-    spec:
-      chart: victoria-metrics-k8s-stack
-      sourceRef:
-        kind: HelmRepository
-        name: victoria-metrics
-        namespace: flux-system
-      version: 0.74.1
-  install:
-    createNamespace: true
-    remediation:
-      retries: 3
-  interval: 30m
-  timeout: 15m
-  upgrade:
-    cleanupOnFail: true
-    remediation:
-      retries: 3
+  chartRef:
+    kind: OCIRepository
+    name: victoria-metrics
+  interval: 1h
   values:
     alertmanager:
       enabled: false
+    defaultDashboards:
+      grafanaOperator:
+        enabled: true
+        spec:
+          allowCrossNamespaceImport: true
+    defaultDatasources:
+      grafanaOperator:
+        enabled: true
+        spec:
+          allowCrossNamespaceImport: true
     fullnameOverride: vm
     grafana:
       enabled: false
+    kube-state-metrics:
+      enabled: false
     kubeControllerManager:
-      enabled: true
       vmScrape:
         spec:
           endpoints:
           - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
             port: http-metrics
             scheme: https
             tlsConfig:
               insecureSkipVerify: true
+    kubeEtcd:
+      service:
+        port: 2381
+        selector:
+          component: kube-apiserver
+        targetPort: 2381
+      vmScrape:
+        spec:
+          endpoints:
+          - scheme: http
     kubeScheduler:
-      enabled: true
       vmScrape:
         spec:
           endpoints:
           - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
             port: http-metrics
             scheme: https
             tlsConfig:
               insecureSkipVerify: true
-    kubeStateMetrics:
-      enabled: false
-    nodeExporter:
-      enabled: false
-    prometheus:
+    prometheus-node-exporter:
       enabled: false
     victoria-metrics-operator:
-      enabled: true
+      admissionWebhooks:
+        policy: Ignore
+      crds:
+        cleanup:
+          enabled: false
+      operator:
+        enable_converter_ownership: true
     vmagent:
-      enabled: true
       spec:
         externalLabels:
           cluster: main
         extraArgs:
+          promscrape.dropOriginalLabels: 'true'
+          promscrape.maxScrapeSize: 50MiB
           promscrape.streamParse: 'true'
-        remoteWrite:
-        - url: http://vmsingle-vm.observability.svc.cluster.local:8428/api/v1/write
-        replicas: 1
-        resources:
-          limits:
-            memory: 1Gi
-          requests:
-            cpu: 50m
-            memory: 512Mi
         scrapeInterval: 60s
     vmalert:
       enabled: false
     vmauth:
-      enabled: false
+      enabled: true
+      spec:
+        extraArgs:
+          requestBufferSize: '65536'
+        unauthorizedUserAccessSpec:
+          url_map:
+          - src_paths:
+            - /api/v1/query.*
+            - /api/v1/label/.*
+            url_prefix: http://vmsingle-vm.observability.svc.cluster.local:8428
+          - src_paths:
+            - /select/logsql/.*
+            url_prefix: http://victoria-logs.observability.svc.cluster.local:9428
     vmsingle:
-      enabled: true
       spec:
         resources:
           limits:
             memory: 2Gi
           requests:
             cpu: 100m
--- kubernetes/apps/observability/victoria-metrics/app Kustomization: observability/victoria-metrics GrafanaDashboard: observability/kubernetes-api-server

+++ kubernetes/apps/observability/victoria-metrics/app Kustomization: observability/victoria-metrics GrafanaDashboard: observability/kubernetes-api-server

@@ -0,0 +1,20 @@

+---
+apiVersion: grafana.integreatly.org/v1beta1
+kind: GrafanaDashboard
+metadata:
+  labels:
+    app.kubernetes.io/name: victoria-metrics
+    kustomize.toolkit.fluxcd.io/name: victoria-metrics
+    kustomize.toolkit.fluxcd.io/namespace: observability
+  name: kubernetes-api-server
+  namespace: observability
+spec:
+  allowCrossNamespaceImport: true
+  datasources:
+  - datasourceName: VictoriaMetrics
+    inputName: DS_PROMETHEUS
+  instanceSelector:
+    matchLabels:
+      dashboards: grafana
+  url: https://grafana.com/api/dashboards/15761/revisions/21/download
+
--- kubernetes/apps/observability/victoria-metrics/app Kustomization: observability/victoria-metrics GrafanaDashboard: observability/kubernetes-coredns

+++ kubernetes/apps/observability/victoria-metrics/app Kustomization: observability/victoria-metrics GrafanaDashboard: observability/kubernetes-coredns

@@ -0,0 +1,20 @@

+---
+apiVersion: grafana.integreatly.org/v1beta1
+kind: GrafanaDashboard
+metadata:
+  labels:
+    app.kubernetes.io/name: victoria-metrics
+    kustomize.toolkit.fluxcd.io/name: victoria-metrics
+    kustomize.toolkit.fluxcd.io/namespace: observability
+  name: kubernetes-coredns
+  namespace: observability
+spec:
+  allowCrossNamespaceImport: true
+  datasources:
+  - datasourceName: VictoriaMetrics
+    inputName: DS_PROMETHEUS
+  instanceSelector:
+    matchLabels:
+      dashboards: grafana
+  url: https://grafana.com/api/dashboards/15762/revisions/22/download
+
--- kubernetes/apps/observability/victoria-metrics/app Kustomization: observability/victoria-metrics GrafanaDashboard: observability/kubernetes-global

+++ kubernetes/apps/observability/victoria-metrics/app Kustomization: observability/victoria-metrics GrafanaDashboard: observability/kubernetes-global

@@ -0,0 +1,20 @@

+---
+apiVersion: grafana.integreatly.org/v1beta1
+kind: GrafanaDashboard
+metadata:
+  labels:
+    app.kubernetes.io/name: victoria-metrics
+    kustomize.toolkit.fluxcd.io/name: victoria-metrics
+    kustomize.toolkit.fluxcd.io/namespace: observability
+  name: kubernetes-global
+  namespace: observability
+spec:
+  allowCrossNamespaceImport: true
+  datasources:
+  - datasourceName: VictoriaMetrics
+    inputName: DS_PROMETHEUS
+  instanceSelector:
+    matchLabels:
+      dashboards: grafana
+  url: https://grafana.com/api/dashboards/15757/revisions/43/download
+
--- kubernetes/apps/observability/victoria-metrics/app Kustomization: observability/victoria-metrics GrafanaDashboard: observability/kubernetes-namespaces

+++ kubernetes/apps/observability/victoria-metrics/app Kustomization: observability/victoria-metrics GrafanaDashboard: observability/kubernetes-namespaces

@@ -0,0 +1,20 @@

+---
+apiVersion: grafana.integreatly.org/v1beta1
+kind: GrafanaDashboard
+metadata:
+  labels:
+    app.kubernetes.io/name: victoria-metrics
+    kustomize.toolkit.fluxcd.io/name: victoria-metrics
+    kustomize.toolkit.fluxcd.io/namespace: observability
+  name: kubernetes-namespaces
+  namespace: observability
+spec:
+  allowCrossNamespaceImport: true
+  datasources:
+  - datasourceName: VictoriaMetrics
+    inputName: DS_PROMETHEUS
+  instanceSelector:
+    matchLabels:
+      dashboards: grafana
+  url: https://grafana.com/api/dashboards/15758/revisions/46/download
+
--- kubernetes/apps/observability/victoria-metrics/app Kustomization: observability/victoria-metrics GrafanaDashboard: observability/kubernetes-nodes

+++ kubernetes/apps/observability/victoria-metrics/app Kustomization: observability/victoria-metrics GrafanaDashboard: observability/kubernetes-nodes

@@ -0,0 +1,20 @@

+---
+apiVersion: grafana.integreatly.org/v1beta1
+kind: GrafanaDashboard
+metadata:
+  labels:
+    app.kubernetes.io/name: victoria-metrics
+    kustomize.toolkit.fluxcd.io/name: victoria-metrics
+    kustomize.toolkit.fluxcd.io/namespace: observability
+  name: kubernetes-nodes
+  namespace: observability
+spec:
+  allowCrossNamespaceImport: true
+  datasources:
+  - datasourceName: VictoriaMetrics
+    inputName: DS_PROMETHEUS
+  instanceSelector:
+    matchLabels:
+      dashboards: grafana
+  url: https://grafana.com/api/dashboards/15759/revisions/40/download
+
--- kubernetes/apps/observability/victoria-metrics/app Kustomization: observability/victoria-metrics GrafanaDashboard: observability/kubernetes-pods

+++ kubernetes/apps/observability/victoria-metrics/app Kustomization: observability/victoria-metrics GrafanaDashboard: observability/kubernetes-pods

@@ -0,0 +1,20 @@

+---
+apiVersion: grafana.integreatly.org/v1beta1
+kind: GrafanaDashboard
+metadata:
+  labels:
+    app.kubernetes.io/name: victoria-metrics
+    kustomize.toolkit.fluxcd.io/name: victoria-metrics
+    kustomize.toolkit.fluxcd.io/namespace: observability
+  name: kubernetes-pods
+  namespace: observability
+spec:
+  allowCrossNamespaceImport: true
+  datasources:
+  - datasourceName: VictoriaMetrics
+    inputName: DS_PROMETHEUS
+  instanceSelector:
+    matchLabels:
+      dashboards: grafana
+  url: https://grafana.com/api/dashboards/15760/revisions/39/download
+
--- kubernetes/apps/observability/victoria-metrics/app Kustomization: observability/victoria-metrics GrafanaDashboard: observability/kubernetes-volumes

+++ kubernetes/apps/observability/victoria-metrics/app Kustomization: observability/victoria-metrics GrafanaDashboard: observability/kubernetes-volumes

@@ -0,0 +1,20 @@

+---
+apiVersion: grafana.integreatly.org/v1beta1
+kind: GrafanaDashboard
+metadata:
+  labels:
+    app.kubernetes.io/name: victoria-metrics
+    kustomize.toolkit.fluxcd.io/name: victoria-metrics
+    kustomize.toolkit.fluxcd.io/namespace: observability
+  name: kubernetes-volumes
+  namespace: observability
+spec:
+  allowCrossNamespaceImport: true
+  datasources:
+  - datasourceName: VictoriaMetrics
+    inputName: DS_PROMETHEUS
+  instanceSelector:
+    matchLabels:
+      dashboards: grafana
+  url: https://grafana.com/api/dashboards/11454/revisions/14/download
+
--- kubernetes/apps/observability/victoria-metrics/app Kustomization: observability/victoria-metrics OCIRepository: observability/victoria-metrics

+++ kubernetes/apps/observability/victoria-metrics/app Kustomization: observability/victoria-metrics OCIRepository: observability/victoria-metrics

@@ -0,0 +1,19 @@

+---
+apiVersion: source.toolkit.fluxcd.io/v1
+kind: OCIRepository
+metadata:
+  labels:
+    app.kubernetes.io/name: victoria-metrics
+    kustomize.toolkit.fluxcd.io/name: victoria-metrics
+    kustomize.toolkit.fluxcd.io/namespace: observability
+  name: victoria-metrics
+  namespace: observability
+spec:
+  interval: 15m
+  layerSelector:
+    mediaType: application/vnd.cncf.helm.chart.content.v1.tar+gzip
+    operation: copy
+  ref:
+    tag: 0.76.0
+  url: oci://ghcr.io/victoriametrics/helm-charts/victoria-metrics-k8s-stack
+
--- kubernetes/apps/observability/victoria-logs/app Kustomization: observability/victoria-logs HelmRelease: observability/victoria-logs

+++ kubernetes/apps/observability/victoria-logs/app Kustomization: observability/victoria-logs HelmRelease: observability/victoria-logs

@@ -6,34 +6,19 @@

     app.kubernetes.io/name: victoria-logs
     kustomize.toolkit.fluxcd.io/name: victoria-logs
     kustomize.toolkit.fluxcd.io/namespace: observability
   name: victoria-logs
   namespace: observability
 spec:
-  chart:
-    spec:
-      chart: victoria-logs-single
-      sourceRef:
-        kind: HelmRepository
-        name: victoria-metrics
-        namespace: flux-system
-      version: 0.12.2
-  install:
-    createNamespace: false
-    remediation:
-      retries: 3
-  interval: 30m
-  timeout: 15m
-  upgrade:
-    cleanupOnFail: true
-    remediation:
-      retries: 3
+  chartRef:
+    kind: OCIRepository
+    name: victoria-logs
+  interval: 1h
   values:
-    fullnameOverride: victoria-logs
     server:
-      enabled: true
+      fullnameOverride: victoria-logs
       persistentVolume:
         enabled: true
         size: 20Gi
         storageClassName: ceph-block
       resources:
         limits:
@@ -61,7 +46,9 @@

         parentRefs:
         - name: internal
           namespace: kube-system
           sectionName: https
       serviceMonitor:
         enabled: true
+    vector:
+      enabled: false
 
--- kubernetes/apps/observability/victoria-logs/app Kustomization: observability/victoria-logs OCIRepository: observability/victoria-logs

+++ kubernetes/apps/observability/victoria-logs/app Kustomization: observability/victoria-logs OCIRepository: observability/victoria-logs

@@ -0,0 +1,19 @@

+---
+apiVersion: source.toolkit.fluxcd.io/v1
+kind: OCIRepository
+metadata:
+  labels:
+    app.kubernetes.io/name: victoria-logs
+    kustomize.toolkit.fluxcd.io/name: victoria-logs
+    kustomize.toolkit.fluxcd.io/namespace: observability
+  name: victoria-logs
+  namespace: observability
+spec:
+  interval: 15m
+  layerSelector:
+    mediaType: application/vnd.cncf.helm.chart.content.v1.tar+gzip
+    operation: copy
+  ref:
+    tag: 0.12.3
+  url: oci://ghcr.io/victoriametrics/helm-charts/victoria-logs-single
+
--- kubernetes/apps/observability/grafana/app Kustomization: observability/grafana HelmRelease: observability/grafana

+++ kubernetes/apps/observability/grafana/app Kustomization: observability/grafana HelmRelease: observability/grafana

@@ -1,301 +0,0 @@

----
-apiVersion: helm.toolkit.fluxcd.io/v2
-kind: HelmRelease
-metadata:
-  labels:
-    app.kubernetes.io/name: grafana
-    kustomize.toolkit.fluxcd.io/name: grafana
-    kustomize.toolkit.fluxcd.io/namespace: observability
-  name: grafana
-  namespace: observability
-spec:
-  chart:
-    spec:
-      chart: grafana
-      sourceRef:
-        kind: HelmRepository
-        name: grafana
-        namespace: flux-system
-      version: 10.5.15
-  install:
-    remediation:
-      retries: 3
-  interval: 1h
-  upgrade:
-    cleanupOnFail: true
-    remediation:
-      retries: 3
-      strategy: rollback
-  values:
-    admin:
-      existingSecret: grafana-secret
-    dashboardProviders:
-      dashboardproviders.yaml:
-        apiVersion: 1
-        providers:
-        - disableDeletion: false
-          editable: true
-          folder: ''
-          name: default
-          options:
-            path: /var/lib/grafana/dashboards/default
-          orgId: 1
-          type: file
-        - disableDeletion: false
-          editable: true
-          folder: Ceph
-          name: ceph
-          options:
-            path: /var/lib/grafana/dashboards/ceph
-          orgId: 1
-          type: file
-        - disableDeletion: false
-          editable: true
-          folder: Flux
-          name: flux
-          options:
-            path: /var/lib/grafana/dashboards/flux
-          orgId: 1
-          type: file
-        - disableDeletion: false
-          editable: true
-          folder: Kubernetes
-          name: kubernetes
-          options:
-            path: /var/lib/grafana/dashboards/kubernetes
-          orgId: 1
-          type: file
-        - disableDeletion: false
-          editable: true
-          folder: Unifi
-          name: unifi
-          options:
-            path: /var/lib/grafana/dashboards/unifi
-          orgId: 1
-          type: file
-    dashboards:
-      ceph:
-        ceph-cluster:
-          datasource: Prometheus
-          gnetId: 2842
-          revision: 17
-        ceph-osd:
-          datasource: Prometheus
-          gnetId: 5336
-          revision: 9
-        ceph-pools:
-          datasource: Prometheus
-          gnetId: 5342
-          revision: 9
-      default:
-        blackbox-exporter:
-          datasource: Prometheus
-          gnetId: 7587
-          revision: 3
-        cert-manager:
-          datasource: Prometheus
-          gnetId: 20842
-          revision: 3
-        cloudflared:
-          datasource:
-          - name: DS_PROMETHEUS
-            value: Prometheus
-          gnetId: 17457
-          revision: 6
-        external-dns:
-          datasource: Prometheus
-          gnetId: 15038
-          revision: 3
-        external-secrets:
-          datasource: Prometheus
-          url: https://raw.githubusercontent.com/external-secrets/external-secrets/main/docs/snippets/dashboard.json
-        gatus:
-          datasource: Prometheus
-          url: https://raw.githubusercontent.com/TwiN/gatus/master/.examples/docker-compose-grafana-prometheus/grafana/provisioning/dashboards/gatus.json
-        node-exporter-full:
-          datasource: Prometheus
-          gnetId: 1860
-          revision: 45
-        node-feature-discovery:
-          datasource: Prometheus
-          url: https://raw.githubusercontent.com/kubernetes-sigs/node-feature-discovery/master/examples/grafana-dashboard.json
-        prometheus:
-          datasource: Prometheus
-          gnetId: 19105
-          revision: 9
-        smartctl-exporter:
-          datasource:
-          - name: DS_VICTORIAMETRICS
-            value: Prometheus
-          gnetId: 22381
-          revision: 1
-        spegel:
-          datasource:
-          - name: DS_PROMETHEUS
-            value: Prometheus
-          gnetId: 18089
-          revision: 1
-        unpackerr:
-          datasource:
-          - name: DS_PROMETHEUS
-            value: Prometheus
-          gnetId: 18817
-          revision: 1
-        volsync:
-          datasource:
-          - name: DS_PROMETHEUS
-            value: Prometheus
-          gnetId: 21356
-          revision: 3
-      flux:
-        flux-cluster:
-          datasource:
-          - name: DS_PROMETHEUS
-            value: Prometheus
-          url: https://raw.githubusercontent.com/fluxcd/flux2-monitoring-example/refs/heads/main/monitoring/configs/dashboards/cluster.json
-        flux-control-plane:
-          datasource:
-          - name: DS_PROMETHEUS
-            value: Prometheus
-          url: https://raw.githubusercontent.com/fluxcd/flux2-monitoring-example/refs/heads/main/monitoring/configs/dashboards/control-plane.json
-        flux-k8s-api-performance:
-          datasource:
-          - name: DS_PROMETHEUS
-            value: Prometheus
-          url: https://raw.githubusercontent.com/controlplaneio-fluxcd/flux-operator/refs/heads/main/config/monitoring/dashboards/flux-k8s-api-performance.json
-        flux-performance:
-          datasource:
-          - name: DS_PROMETHEUS
-            value: Prometheus
-          url: https://raw.githubusercontent.com/controlplaneio-fluxcd/flux-operator/refs/heads/main/config/monitoring/dashboards/flux-performance.json
-      kubernetes:
-        kubernetes-api-server:
-          datasource: Prometheus
-          url: https://raw.githubusercontent.com/dotdc/grafana-dashboards-kubernetes/master/dashboards/k8s-system-api-server.json
-        kubernetes-coredns:
-          datasource: Prometheus
-          url: https://raw.githubusercontent.com/dotdc/grafana-dashboards-kubernetes/master/dashboards/k8s-system-coredns.json
-        kubernetes-global:
-          datasource: Prometheus
-          url: https://raw.githubusercontent.com/dotdc/grafana-dashboards-kubernetes/master/dashboards/k8s-views-global.json
-        kubernetes-namespaces:
-          datasource: Prometheus
-          url: https://raw.githubusercontent.com/dotdc/grafana-dashboards-kubernetes/master/dashboards/k8s-views-namespaces.json
-        kubernetes-nodes:
-          datasource: Prometheus
-          url: https://raw.githubusercontent.com/dotdc/grafana-dashboards-kubernetes/master/dashboards/k8s-views-nodes.json
-        kubernetes-pods:
-          datasource: Prometheus
-          url: https://raw.githubusercontent.com/dotdc/grafana-dashboards-kubernetes/master/dashboards/k8s-views-pods.json
-      unifi:
-        unifi-insights:
-          datasource: Prometheus
-          gnetId: 11315
-          revision: 9
-        unifi-network-sites:
-          datasource: Prometheus
-          gnetId: 11311
-          revision: 5
-        unifi-uap:
-          datasource: Prometheus
-          gnetId: 11314
-          revision: 10
-        unifi-usw:
-          datasource: Prometheus
-          gnetId: 11312
-          revision: 9
-    datasources:
-      datasources.yaml:
-        apiVersion: 1
-        datasources:
-        - access: proxy
-          isDefault: true
-          jsonData:
-            timeInterval: 1m
-          name: VictoriaMetrics
-          type: prometheus
-          uid: prometheus
-          url: http://vmsingle-vm.observability.svc.cluster.local:8428
-        - access: proxy
-          jsonData:
-            maxLines: 500
-          name: VictoriaLogs
-          type: loki
-          uid: loki
-          url: http://victoria-logs-server.observability.svc.cluster.local:9428
-        deleteDatasources:
-        - name: Alertmanager
-          orgId: 1
-        - name: Loki
-          orgId: 1
-        - name: Prometheus
-          orgId: 1
-    deploymentStrategy:
-      type: Recreate
-    env:
-      GF_DATE_FORMATS_USE_BROWSER_LOCALE: true
-      GF_EXPLORE_ENABLED: true
-      GF_PLUGINS_ALLOW_LOADING_UNSIGNED_PLUGINS: natel-discrete-panel,pr0ps-trackmap-panel,panodata-map-panel
-      GF_SECURITY_ANGULAR_SUPPORT_ENABLED: true
-      GF_SERVER_ROOT_URL: https://{{ .Release.Name }}.${SECRET_DOMAIN}
-    grafana.ini:
-      analytics:
-        check_for_plugin_updates: false
-        check_for_updates: false
-        reporting_enabled: false
-      auth.anonymous:
-        enabled: true
-        org_id: 1
-        org_name: Main Org.
-        org_role: Viewer
-      news:
-        news_feed_enabled: false
-    persistence:
-      enabled: false
-    plugins:
-    - grafana-clock-panel
-    - grafana-piechart-panel
-    - grafana-worldmap-panel
-    - natel-discrete-panel
-    - pr0ps-trackmap-panel
-    - vonage-status-panel
-    resources:
-      limits:
-        memory: 1Gi
-      requests:
-        cpu: 100m
-        memory: 128Mi
-    route:
-      main:
-        annotations:
-          glance/description: Grafana dashboard for observability and monitoring.
-          glance/icon: https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/grafana.png
-          glance/name: Grafana
-          glance/show: 'true'
-        enabled: true
-        hostnames:
-        - '{{ .Release.Name }}.juno.moe'
-        parentRefs:
-        - name: internal
-          namespace: kube-system
-          sectionName: https
-    serviceMonitor:
-      enabled: true
-    sidecar:
-      dashboards:
-        enabled: false
-        folderAnnotation: grafana_folder
-        label: grafana_dashboard
-        labelValue: ''
-        provider:
-          disableDelete: true
-          foldersFromFilesStructure: true
-        searchNamespace: ALL
-      datasources:
-        enabled: true
-        label: grafana_datasource
-        labelValue: ''
-        searchNamespace: ALL
-    testFramework:
-      enabled: false
-
--- kubernetes/apps/observability/grafana/app Kustomization: observability/grafana ExternalSecret: observability/grafana

+++ kubernetes/apps/observability/grafana/app Kustomization: observability/grafana ExternalSecret: observability/grafana

@@ -1,26 +0,0 @@

----
-apiVersion: external-secrets.io/v1
-kind: ExternalSecret
-metadata:
-  labels:
-    app.kubernetes.io/name: grafana
-    kustomize.toolkit.fluxcd.io/name: grafana
-    kustomize.toolkit.fluxcd.io/namespace: observability
-  name: grafana
-  namespace: observability
-spec:
-  dataFrom:
-  - extract:
-      key: grafana
-  secretStoreRef:
-    kind: ClusterSecretStore
-    name: onepassword-connect
-  target:
-    creationPolicy: Owner
-    name: grafana-secret
-    template:
-      data:
-        admin-password: '{{ .GRAFANA_ADMIN_PASS }}'
-        admin-user: '{{ .GRAFANA_ADMIN_USER }}'
-      engineVersion: v2
-
--- kubernetes/apps/observability/grafana/app Kustomization: observability/grafana ExternalSecret: observability/grafana-admin-password

+++ kubernetes/apps/observability/grafana/app Kustomization: observability/grafana ExternalSecret: observability/grafana-admin-password

@@ -0,0 +1,23 @@

+---
+apiVersion: external-secrets.io/v1
+kind: ExternalSecret
+metadata:
+  labels:
+    app.kubernetes.io/name: grafana
+    kustomize.toolkit.fluxcd.io/name: grafana
+    kustomize.toolkit.fluxcd.io/namespace: observability
+  name: grafana-admin-password
+  namespace: observability
+spec:
+  dataFrom:
+  - extract:
+      key: grafana
+  secretStoreRef:
+    kind: ClusterSecretStore
+    name: onepassword-connect
+  target:
+    name: grafana-admin-password-secret
+    template:
+      data:
+        GF_SECURITY_ADMIN_PASSWORD: '{{ .GRAFANA_ADMIN_PASS }}'
+
--- kubernetes/apps/observability/grafana/app Kustomization: observability/grafana HelmRelease: observability/grafana-operator

+++ kubernetes/apps/observability/grafana/app Kustomization: observability/grafana HelmRelease: observability/grafana-operator

@@ -0,0 +1,21 @@

+---
+apiVersion: helm.toolkit.fluxcd.io/v2
+kind: HelmRelease
+metadata:
+  labels:
+    app.kubernetes.io/name: grafana
+    kustomize.toolkit.fluxcd.io/name: grafana
+    kustomize.toolkit.fluxcd.io/namespace: observability
+  name: grafana-operator
+  namespace: observability
+spec:
+  chartRef:
+    kind: OCIRepository
+    name: grafana-operator
+  interval: 1h
+  values:
+    dashboard:
+      enabled: true
+    serviceMonitor:
+      enabled: true
+
--- kubernetes/apps/observability/grafana/app Kustomization: observability/grafana OCIRepository: observability/grafana-operator

+++ kubernetes/apps/observability/grafana/app Kustomization: observability/grafana OCIRepository: observability/grafana-operator

@@ -0,0 +1,19 @@

+---
+apiVersion: source.toolkit.fluxcd.io/v1
+kind: OCIRepository
+metadata:
+  labels:
+    app.kubernetes.io/name: grafana
+    kustomize.toolkit.fluxcd.io/name: grafana
+    kustomize.toolkit.fluxcd.io/namespace: observability
+  name: grafana-operator
+  namespace: observability
+spec:
+  interval: 15m
+  layerSelector:
+    mediaType: application/vnd.cncf.helm.chart.content.v1.tar+gzip
+    operation: copy
+  ref:
+    tag: 5.22.2
+  url: oci://ghcr.io/grafana/helm-charts/grafana-operator
+
--- kubernetes/apps/observability/alloy/app Kustomization: observability/alloy HelmRelease: observability/alloy

+++ kubernetes/apps/observability/alloy/app Kustomization: observability/alloy HelmRelease: observability/alloy

@@ -1,69 +0,0 @@

----
-apiVersion: helm.toolkit.fluxcd.io/v2
-kind: HelmRelease
-metadata:
-  labels:
-    app.kubernetes.io/name: alloy
-    kustomize.toolkit.fluxcd.io/name: alloy
-    kustomize.toolkit.fluxcd.io/namespace: observability
-  name: alloy
-  namespace: observability
-spec:
-  chart:
-    spec:
-      chart: alloy
-      sourceRef:
-        kind: HelmRepository
-        name: grafana
-        namespace: flux-system
-      version: '>=1.0.0'
-  install:
-    createNamespace: false
-    remediation:
-      retries: 3
-  interval: 30m
-  timeout: 15m
-  upgrade:
-    cleanupOnFail: true
-    remediation:
-      retries: 3
-  values:
-    alloy:
-      config: |
-        discovery.kubernetes "pods" {
-          role = "pod"
-        }
-
-        loki.source.kubernetes "pod_logs" {
-          discovery = discovery.kubernetes.pods.targets
-          format = "json"
-          forward_to = [loki.process.add_labels.receiver]
-        }
-
-        loki.process "add_labels" {
-          stage.labels {
-            values = {
-              cluster = "main",
-            }
-          }
-          forward_to = [loki.write.victoria_logs.receiver]
-        }
-
-        loki.write "victoria_logs" {
-          endpoint {
-            url = "http://victoria-logs-server.observability.svc.cluster.local:9428/loki/api/v1/push"
-          }
-        }
-    configMap:
-      create: true
-    fullnameOverride: alloy
-    replicas: 1
-    resources:
-      limits:
-        memory: 512Mi
-      requests:
-        cpu: 50m
-        memory: 256Mi
-    serviceMonitor:
-      enabled: true
-
--- kubernetes/apps/observability/node-exporter/app Kustomization: observability/node-exporter HelmRelease: observability/node-exporter

+++ kubernetes/apps/observability/node-exporter/app Kustomization: observability/node-exporter HelmRelease: observability/node-exporter

@@ -0,0 +1,42 @@

+---
+apiVersion: helm.toolkit.fluxcd.io/v2
+kind: HelmRelease
+metadata:
+  labels:
+    app.kubernetes.io/name: node-exporter
+    kustomize.toolkit.fluxcd.io/name: node-exporter
+    kustomize.toolkit.fluxcd.io/namespace: observability
+  name: node-exporter
+  namespace: observability
+spec:
+  chartRef:
+    kind: OCIRepository
+    name: node-exporter
+  interval: 1h
+  values:
+    fullnameOverride: node-exporter
+    hostNetwork: false
+    prometheus:
+      monitor:
+        enabled: true
+        jobLabel: app.kubernetes.io/instance
+        relabelings:
+        - action: replace
+          regex: (.*)
+          replacement: $1
+          sourceLabels:
+          - __meta_kubernetes_pod_node_name
+          targetLabel: kubernetes_node
+        - action: replace
+          regex: (.*)
+          replacement: $1
+          sourceLabels:
+          - __meta_kubernetes_pod_node_name
+          targetLabel: nodename
+    resources:
+      limits:
+        memory: 64M
+      requests:
+        cpu: 10m
+        memory: 64M
+
--- kubernetes/apps/observability/node-exporter/app Kustomization: observability/node-exporter OCIRepository: observability/node-exporter

+++ kubernetes/apps/observability/node-exporter/app Kustomization: observability/node-exporter OCIRepository: observability/node-exporter

@@ -0,0 +1,19 @@

+---
+apiVersion: source.toolkit.fluxcd.io/v1
+kind: OCIRepository
+metadata:
+  labels:
+    app.kubernetes.io/name: node-exporter
+    kustomize.toolkit.fluxcd.io/name: node-exporter
+    kustomize.toolkit.fluxcd.io/namespace: observability
+  name: node-exporter
+  namespace: observability
+spec:
+  interval: 15m
+  layerSelector:
+    mediaType: application/vnd.cncf.helm.chart.content.v1.tar+gzip
+    operation: copy
+  ref:
+    tag: 4.55.0
+  url: oci://ghcr.io/prometheus-community/charts/prometheus-node-exporter
+
--- kubernetes/apps/observability/prometheus-adapter/app Kustomization: observability/prometheus-adapter HelmRelease: observability/prometheus-adapter

+++ kubernetes/apps/observability/prometheus-adapter/app Kustomization: observability/prometheus-adapter HelmRelease: observability/prometheus-adapter

@@ -0,0 +1,29 @@

+---
+apiVersion: helm.toolkit.fluxcd.io/v2
+kind: HelmRelease
+metadata:
+  labels:
+    app.kubernetes.io/name: prometheus-adapter
+    kustomize.toolkit.fluxcd.io/name: prometheus-adapter
+    kustomize.toolkit.fluxcd.io/namespace: observability
+  name: prometheus-adapter
+  namespace: observability
+spec:
+  chartRef:
+    kind: OCIRepository
+    name: prometheus-adapter
+  interval: 1h
+  values:
+    prometheus:
+      port: 8428
+      url: http://vmsingle-vm.observability.svc.cluster.local
+    rules:
+      default: false
+      external:
+      - metricsQuery: max_over_time(<<.Series>>{<<.LabelMatchers>>}[1m])
+        name:
+          as: probe_success
+        resources:
+          namespaced: false
+        seriesQuery: '{__name__="probe_success"}'
+
--- kubernetes/apps/observability/prometheus-adapter/app Kustomization: observability/prometheus-adapter OCIRepository: observability/prometheus-adapter

+++ kubernetes/apps/observability/prometheus-adapter/app Kustomization: observability/prometheus-adapter OCIRepository: observability/prometheus-adapter

@@ -0,0 +1,19 @@

+---
+apiVersion: source.toolkit.fluxcd.io/v1
+kind: OCIRepository
+metadata:
+  labels:
+    app.kubernetes.io/name: prometheus-adapter
+    kustomize.toolkit.fluxcd.io/name: prometheus-adapter
+    kustomize.toolkit.fluxcd.io/namespace: observability
+  name: prometheus-adapter
+  namespace: observability
+spec:
+  interval: 15m
+  layerSelector:
+    mediaType: application/vnd.cncf.helm.chart.content.v1.tar+gzip
+    operation: copy
+  ref:
+    tag: 5.3.0
+  url: oci://ghcr.io/prometheus-community/charts/prometheus-adapter
+
--- kubernetes/apps/observability/kube-state-metrics/app Kustomization: observability/kube-state-metrics HelmRelease: observability/kube-state-metrics

+++ kubernetes/apps/observability/kube-state-metrics/app Kustomization: observability/kube-state-metrics HelmRelease: observability/kube-state-metrics

@@ -0,0 +1,384 @@

+---
+apiVersion: helm.toolkit.fluxcd.io/v2
+kind: HelmRelease
+metadata:
+  labels:
+    app.kubernetes.io/name: kube-state-metrics
+    kustomize.toolkit.fluxcd.io/name: kube-state-metrics
+    kustomize.toolkit.fluxcd.io/namespace: observability
+  name: kube-state-metrics
+  namespace: observability
+spec:
+  chartRef:
+    kind: OCIRepository
+    name: kube-state-metrics
+  interval: 1h
+  values:
+    customResourceState:
+      config:
+        spec:
+          resources:
+          - groupVersionKind:
+              group: kustomize.toolkit.fluxcd.io
+              kind: Kustomization
+              version: v1
+            metricNamePrefix: gotk
+            metrics:
+            - each:
+                info:
+                  labelsFromPath:
+                    name:
+                    - metadata
+                    - name
+                type: Info
+              help: The current state of a Flux Kustomization resource.
+              labelsFromPath:
+                exported_namespace:
+                - metadata
+                - namespace
+                ready:
+                - status
+                - conditions
+                - '[type=Ready]'
+                - status
+                revision:
+                - status
+                - lastAppliedRevision
+                source_name:
+                - spec
+                - sourceRef
+                - name
+                suspended:
+                - spec
+                - suspend
+              name: resource_info
+          - groupVersionKind:
+              group: helm.toolkit.fluxcd.io
+              kind: HelmRelease
+              version: v2
+            metricNamePrefix: gotk
+            metrics:
+            - each:
+                info:
+                  labelsFromPath:
+                    name:
+                    - metadata
+                    - name
+                type: Info
+              help: The current state of a Flux HelmRelease resource.
+              labelsFromPath:
+                chart_app_version:
+                - status
+                - history
+                - '0'
+                - appVersion
+                chart_name:
+                - status
+                - history
+                - '0'
+                - chartName
+                chart_ref_name:
+                - spec
+                - chartRef
+                - name
+                chart_source_name:
+                - spec
+                - chart
+                - spec
+                - sourceRef
+                - name
+                exported_namespace:
+                - metadata
+                - namespace
+                ready:
+                - status
+                - conditions
+                - '[type=Ready]'
+                - status
+                revision:
+                - status
+                - history
+                - '0'
+                - chartVersion
+                suspended:
+                - spec
+                - suspend
+              name: resource_info
+          - groupVersionKind:
+              group: source.toolkit.fluxcd.io
+              kind: GitRepository
+              version: v1
+            metricNamePrefix: gotk
+            metrics:
+            - each:
+                info:
+                  labelsFromPath:
+                    name:
+                    - metadata
+                    - name
+                type: Info
+              help: The current state of a Flux GitRepository resource.
+              labelsFromPath:
+                exported_namespace:
+                - metadata
+                - namespace
+                ready:
+                - status
+                - conditions
+                - '[type=Ready]'
+                - status
+                revision:
+                - status
+                - artifact
+                - revision
+                suspended:
+                - spec
+                - suspend
+                url:
+                - spec
+                - url
+              name: resource_info
+          - groupVersionKind:
+              group: source.toolkit.fluxcd.io
+              kind: Bucket
+              version: v1
+            metricNamePrefix: gotk
+            metrics:
+            - each:
+                info:
+                  labelsFromPath:
+                    name:
+                    - metadata
+                    - name
+                type: Info
+              help: The current state of a Flux Bucket resource.
+              labelsFromPath:
+                bucket_name:
+                - spec
+                - bucketName
+                endpoint:
+                - spec
+                - endpoint
+                exported_namespace:
+                - metadata
+                - namespace
+                ready:
+                - status
+                - conditions
+                - '[type=Ready]'
+                - status
+                revision:
+                - status
+                - artifact
+                - revision
+                suspended:
+                - spec
+                - suspend
+              name: resource_info
+          - groupVersionKind:
+              group: source.toolkit.fluxcd.io
+              kind: HelmRepository
+              version: v1
+            metricNamePrefix: gotk
+            metrics:
+            - each:
+                info:
+                  labelsFromPath:
+                    name:
+                    - metadata
+                    - name
+                type: Info
+              help: The current state of a Flux HelmRepository resource.
+              labelsFromPath:
+                exported_namespace:
+                - metadata
+                - namespace
+                ready:
+                - status
+                - conditions
+                - '[type=Ready]'
+                - status
+                revision:
+                - status
+                - artifact
+                - revision
+                suspended:
+                - spec
+                - suspend
+                url:
+                - spec
+                - url
+              name: resource_info
+          - groupVersionKind:
+              group: source.toolkit.fluxcd.io
+              kind: HelmChart
+              version: v1
+            metricNamePrefix: gotk
+            metrics:
+            - each:
+                info:
+                  labelsFromPath:
+                    name:
+                    - metadata
+                    - name
+                type: Info
+              help: The current state of a Flux HelmChart resource.
+              labelsFromPath:
+                chart_name:
+                - spec
+                - chart
+                chart_version:
+                - spec
+                - version
+                exported_namespace:
+                - metadata
+                - namespace
+                ready:
+                - status
+                - conditions
+                - '[type=Ready]'
+                - status
+                revision:
+                - status
+                - artifact
+                - revision
+                suspended:
+                - spec
+                - suspend
+              name: resource_info
+          - groupVersionKind:
+              group: source.toolkit.fluxcd.io
+              kind: OCIRepository
+              version: v1
+            metricNamePrefix: gotk
+            metrics:
+            - each:
+                info:
+                  labelsFromPath:
+                    name:
+                    - metadata
+                    - name
+                type: Info
+              help: The current state of a Flux OCIRepository resource.
+              labelsFromPath:
+                exported_namespace:
+                - metadata
+                - namespace
+                ready:
+                - status
+                - conditions
+                - '[type=Ready]'
+                - status
+                revision:
+                - status
+                - artifact
+                - revision
+                suspended:
+                - spec
+                - suspend
+                url:
+                - spec
+                - url
+              name: resource_info
+          - groupVersionKind:
+              group: notification.toolkit.fluxcd.io
+              kind: Alert
+              version: v1beta3
+            metricNamePrefix: gotk
+            metrics:
+            - each:
+                info:
+                  labelsFromPath:
+                    name:
+                    - metadata
+                    - name
+                type: Info
+              help: The current state of a Flux Alert resource.
+              labelsFromPath:
+                exported_namespace:
+                - metadata
+                - namespace
+                suspended:
+                - spec
+                - suspend
+              name: resource_info
+          - groupVersionKind:
+              group: notification.toolkit.fluxcd.io
+              kind: Provider
+              version: v1beta3
+            metricNamePrefix: gotk
+            metrics:
+            - each:
+                info:
+                  labelsFromPath:
+                    name:
+                    - metadata
+                    - name
+                type: Info
+              help: The current state of a Flux Provider resource.
+              labelsFromPath:
+                exported_namespace:
+                - metadata
+                - namespace
+                suspended:
+                - spec
+                - suspend
+              name: resource_info
+          - groupVersionKind:
+              group: notification.toolkit.fluxcd.io
+              kind: Receiver
+              version: v1
+            metricNamePrefix: gotk
+            metrics:
+            - each:
+                info:
+                  labelsFromPath:
[Diff truncated by flux-local]
--- kubernetes/apps/observability/kube-state-metrics/app Kustomization: observability/kube-state-metrics OCIRepository: observability/kube-state-metrics

+++ kubernetes/apps/observability/kube-state-metrics/app Kustomization: observability/kube-state-metrics OCIRepository: observability/kube-state-metrics

@@ -0,0 +1,19 @@

+---
+apiVersion: source.toolkit.fluxcd.io/v1
+kind: OCIRepository
+metadata:
+  labels:
+    app.kubernetes.io/name: kube-state-metrics
+    kustomize.toolkit.fluxcd.io/name: kube-state-metrics
+    kustomize.toolkit.fluxcd.io/namespace: observability
+  name: kube-state-metrics
+  namespace: observability
+spec:
+  interval: 15m
+  layerSelector:
+    mediaType: application/vnd.cncf.helm.chart.content.v1.tar+gzip
+    operation: copy
+  ref:
+    tag: 7.3.0
+  url: oci://ghcr.io/prometheus-community/charts/kube-state-metrics
+
--- kubernetes/apps/observability/smartctl-exporter/app Kustomization: observability/smartctl-exporter GrafanaDashboard: observability/smartctl-exporter

+++ kubernetes/apps/observability/smartctl-exporter/app Kustomization: observability/smartctl-exporter GrafanaDashboard: observability/smartctl-exporter

@@ -0,0 +1,20 @@

+---
+apiVersion: grafana.integreatly.org/v1beta1
+kind: GrafanaDashboard
+metadata:
+  labels:
+    app.kubernetes.io/name: smartctl-exporter
+    kustomize.toolkit.fluxcd.io/name: smartctl-exporter
+    kustomize.toolkit.fluxcd.io/namespace: observability
+  name: smartctl-exporter
+  namespace: observability
+spec:
+  allowCrossNamespaceImport: true
+  datasources:
+  - datasourceName: VictoriaMetrics
+    inputName: DS_PROMETHEUS
+  instanceSelector:
+    matchLabels:
+      dashboards: grafana
+  url: https://grafana.com/api/dashboards/22604/revisions/2/download
+
--- kubernetes/apps/observability/smartctl-exporter/app Kustomization: observability/smartctl-exporter HelmRelease: observability/smartctl-exporter

+++ kubernetes/apps/observability/smartctl-exporter/app Kustomization: observability/smartctl-exporter HelmRelease: observability/smartctl-exporter

@@ -0,0 +1,22 @@

+---
+apiVersion: helm.toolkit.fluxcd.io/v2
+kind: HelmRelease
+metadata:
+  labels:
+    app.kubernetes.io/name: smartctl-exporter
+    kustomize.toolkit.fluxcd.io/name: smartctl-exporter
+    kustomize.toolkit.fluxcd.io/namespace: observability
+  name: smartctl-exporter
+  namespace: observability
+spec:
+  chartRef:
+    kind: OCIRepository
+    name: smartctl-exporter
+  interval: 1h
+  values:
+    fullnameOverride: smartctl-exporter
+    prometheusRules:
+      enabled: false
+    serviceMonitor:
+      enabled: true
+
--- kubernetes/apps/observability/smartctl-exporter/app Kustomization: observability/smartctl-exporter PrometheusRule: observability/smartctl-exporter-rules

+++ kubernetes/apps/observability/smartctl-exporter/app Kustomization: observability/smartctl-exporter PrometheusRule: observability/smartctl-exporter-rules

@@ -0,0 +1,47 @@

+---
+apiVersion: monitoring.coreos.com/v1
+kind: PrometheusRule
+metadata:
+  labels:
+    app.kubernetes.io/name: smartctl-exporter
+    kustomize.toolkit.fluxcd.io/name: smartctl-exporter
+    kustomize.toolkit.fluxcd.io/namespace: observability
+  name: smartctl-exporter-rules
+  namespace: observability
+spec:
+  groups:
+  - name: smartctl-exporter.rules
+    rules:
+    - alert: SmartDeviceHighTemperature
+      annotations:
+        summary: "Mounted drive {{ $labels.device }} on device {{ $labels.instance\
+          \ }} has a temperature higher than 65\xB0C"
+      expr: smartctl_device_temperature{temperature_type="current"} > 65
+      for: 5m
+      labels:
+        severity: critical
+    - alert: SmartDeviceTestFailed
+      annotations:
+        summary: Mounted drive {{ $labels.device }} on device {{ $labels.instance
+          }} did not pass its SMART test
+      expr: (smartctl_device_smart_status != 1 or smartctl_device_status != 1)
+      for: 5m
+      labels:
+        severity: critical
+    - alert: SmartDeviceCriticalWarning
+      annotations:
+        summary: Mounted drive {{ $labels.device }} on device {{ $labels.instance
+          }} is in a critical state
+      expr: smartctl_device_critical_warning != 0
+      for: 5m
+      labels:
+        severity: critical
+    - alert: SmartDeviceMediaErrors
+      annotations:
+        summary: Mounted drive {{ $labels.device }} on device {{ $labels.instance
+          }} has media errors
+      expr: smartctl_device_media_errors != 0
+      for: 5m
+      labels:
+        severity: critical
+
--- kubernetes/apps/observability/smartctl-exporter/app Kustomization: observability/smartctl-exporter OCIRepository: observability/smartctl-exporter

+++ kubernetes/apps/observability/smartctl-exporter/app Kustomization: observability/smartctl-exporter OCIRepository: observability/smartctl-exporter

@@ -0,0 +1,19 @@

+---
+apiVersion: source.toolkit.fluxcd.io/v1
+kind: OCIRepository
+metadata:
+  labels:
+    app.kubernetes.io/name: smartctl-exporter
+    kustomize.toolkit.fluxcd.io/name: smartctl-exporter
+    kustomize.toolkit.fluxcd.io/namespace: observability
+  name: smartctl-exporter
+  namespace: observability
+spec:
+  interval: 15m
+  layerSelector:
+    mediaType: application/vnd.cncf.helm.chart.content.v1.tar+gzip
+    operation: copy
+  ref:
+    tag: 0.16.0
+  url: oci://ghcr.io/prometheus-community/charts/prometheus-smartctl-exporter
+
--- kubernetes/apps/observability/grafana/instance Kustomization: observability/grafana-instance Grafana: observability/grafana

+++ kubernetes/apps/observability/grafana/instance Kustomization: observability/grafana-instance Grafana: observability/grafana

@@ -0,0 +1,82 @@

+---
+apiVersion: grafana.integreatly.org/v1beta1
+kind: Grafana
+metadata:
+  labels:
+    app.kubernetes.io/name: grafana-instance
+    dashboards: grafana
+    kustomize.toolkit.fluxcd.io/name: grafana-instance
+    kustomize.toolkit.fluxcd.io/namespace: observability
+  name: grafana
+  namespace: observability
+spec:
+  config:
+    analytics:
+      check_for_plugin_updates: 'false'
+      check_for_updates: 'false'
+      feedback_links_enabled: 'false'
+      reporting_enabled: 'false'
+    auth:
+      disable_login_form: 'false'
+    auth.anonymous:
+      enabled: 'true'
+    log:
+      mode: console
+    metrics:
+      enabled: 'true'
+    news:
+      news_feed_enabled: 'false'
+    plugins:
+      plugin_admin_enabled: 'false'
+    security:
+      angular_support_enabled: 'true'
+    server:
+      enable_gzip: 'true'
+  deployment:
+    spec:
+      strategy:
+        type: Recreate
+      template:
+        spec:
+          containers:
+          - env:
+            - name: GF_SECURITY_ADMIN_PASSWORD
+              valueFrom:
+                secretKeyRef:
+                  key: GF_SECURITY_ADMIN_PASSWORD
+                  name: grafana-admin-password-secret
+            name: grafana
+            securityContext:
+              allowPrivilegeEscalation: false
+              capabilities:
+                drop:
+                - ALL
+              readOnlyRootFilesystem: true
+          securityContext:
+            fsGroup: 1000
+            fsGroupChangePolicy: OnRootMismatch
+            runAsGroup: 1000
+            runAsNonRoot: true
+            runAsUser: 1000
+          volumes:
+          - name: grafana-data
+            persistentVolumeClaim:
+              claimName: grafana-pvc
+  disableDefaultSecurityContext: All
+  httpRoute:
+    spec:
+      hostnames:
+      - grafana.juno.moe
+      parentRefs:
+      - name: internal
+        namespace: kube-system
+        sectionName: https
+  persistentVolumeClaim:
+    spec:
+      accessModes:
+      - ReadWriteOnce
+      resources:
+        requests:
+          storage: 5Gi
+      storageClassName: ceph-block
+
--- kubernetes/apps/observability/grafana/instance Kustomization: observability/grafana-instance GrafanaDashboard: observability/blackbox-exporter

+++ kubernetes/apps/observability/grafana/instance Kustomization: observability/grafana-instance GrafanaDashboard: observability/blackbox-exporter

@@ -0,0 +1,20 @@

+---
+apiVersion: grafana.integreatly.org/v1beta1
+kind: GrafanaDashboard
+metadata:
+  labels:
+    app.kubernetes.io/name: grafana-instance
+    kustomize.toolkit.fluxcd.io/name: grafana-instance
+    kustomize.toolkit.fluxcd.io/namespace: observability
+  name: blackbox-exporter
+  namespace: observability
+spec:
+  allowCrossNamespaceImport: true
+  datasources:
+  - datasourceName: VictoriaMetrics
+    inputName: DS_PROMETHEUS
+  instanceSelector:
+    matchLabels:
+      dashboards: grafana
+  url: https://grafana.com/api/dashboards/7587/revisions/3/download
+
--- kubernetes/apps/observability/grafana/instance Kustomization: observability/grafana-instance GrafanaDashboard: observability/cert-manager

+++ kubernetes/apps/observability/grafana/instance Kustomization: observability/grafana-instance GrafanaDashboard: observability/cert-manager

@@ -0,0 +1,20 @@

+---
+apiVersion: grafana.integreatly.org/v1beta1
+kind: GrafanaDashboard
+metadata:
+  labels:
+    app.kubernetes.io/name: grafana-instance
+    kustomize.toolkit.fluxcd.io/name: grafana-instance
+    kustomize.toolkit.fluxcd.io/namespace: observability
+  name: cert-manager
+  namespace: observability
+spec:
+  allowCrossNamespaceImport: true
+  datasources:
+  - datasourceName: VictoriaMetrics
+    inputName: DS_PROMETHEUS
+  instanceSelector:
+    matchLabels:
+      dashboards: grafana
+  url: https://grafana.com/api/dashboards/20842/revisions/3/download
+
--- kubernetes/apps/observability/grafana/instance Kustomization: observability/grafana-instance GrafanaDashboard: observability/cloudflared

+++ kubernetes/apps/observability/grafana/instance Kustomization: observability/grafana-instance GrafanaDashboard: observability/cloudflared

@@ -0,0 +1,20 @@

+---
+apiVersion: grafana.integreatly.org/v1beta1
+kind: GrafanaDashboard
+metadata:
+  labels:
+    app.kubernetes.io/name: grafana-instance
+    kustomize.toolkit.fluxcd.io/name: grafana-instance
+    kustomize.toolkit.fluxcd.io/namespace: observability
+  name: cloudflared
+  namespace: observability
+spec:
+  allowCrossNamespaceImport: true
+  datasources:
+  - datasourceName: VictoriaMetrics
+    inputName: DS_PROMETHEUS
+  instanceSelector:
+    matchLabels:
+      dashboards: grafana
+  url: https://grafana.com/api/dashboards/17457/revisions/6/download
+
--- kubernetes/apps/observability/grafana/instance Kustomization: observability/grafana-instance GrafanaDashboard: observability/external-dns

+++ kubernetes/apps/observability/grafana/instance Kustomization: observability/grafana-instance GrafanaDashboard: observability/external-dns

@@ -0,0 +1,20 @@

+---
+apiVersion: grafana.integreatly.org/v1beta1
+kind: GrafanaDashboard
+metadata:
+  labels:
+    app.kubernetes.io/name: grafana-instance
+    kustomize.toolkit.fluxcd.io/name: grafana-instance
+    kustomize.toolkit.fluxcd.io/namespace: observability
+  name: external-dns
+  namespace: observability
+spec:
+  allowCrossNamespaceImport: true
+  datasources:
+  - datasourceName: VictoriaMetrics
+    inputName: DS_PROMETHEUS
+  instanceSelector:
+    matchLabels:
+      dashboards: grafana
+  url: https://grafana.com/api/dashboards/15038/revisions/3/download
+
--- kubernetes/apps/observability/grafana/instance Kustomization: observability/grafana-instance GrafanaDashboard: observability/external-secrets

+++ kubernetes/apps/observability/grafana/instance Kustomization: observability/grafana-instance GrafanaDashboard: observability/external-secrets

@@ -0,0 +1,20 @@

+---
+apiVersion: grafana.integreatly.org/v1beta1
+kind: GrafanaDashboard
+metadata:
+  labels:
+    app.kubernetes.io/name: grafana-instance
+    kustomize.toolkit.fluxcd.io/name: grafana-instance
+    kustomize.toolkit.fluxcd.io/namespace: observability
+  name: external-secrets
+  namespace: observability
+spec:
+  allowCrossNamespaceImport: true
+  datasources:
+  - datasourceName: VictoriaMetrics
+    inputName: DS_PROMETHEUS
+  instanceSelector:
+    matchLabels:
+      dashboards: grafana
+  url: https://raw.githubusercontent.com/external-secrets/external-secrets/main/docs/snippets/dashboard.json
+
--- kubernetes/apps/observability/grafana/instance Kustomization: observability/grafana-instance GrafanaDashboard: observability/gatus

+++ kubernetes/apps/observability/grafana/instance Kustomization: observability/grafana-instance GrafanaDashboard: observability/gatus

@@ -0,0 +1,20 @@

+---
+apiVersion: grafana.integreatly.org/v1beta1
+kind: GrafanaDashboard
+metadata:
+  labels:
+    app.kubernetes.io/name: grafana-instance
+    kustomize.toolkit.fluxcd.io/name: grafana-instance
+    kustomize.toolkit.fluxcd.io/namespace: observability
+  name: gatus
+  namespace: observability
+spec:
+  allowCrossNamespaceImport: true
+  datasources:
+  - datasourceName: VictoriaMetrics
+    inputName: DS_PROMETHEUS
+  instanceSelector:
+    matchLabels:
+      dashboards: grafana
+  url: https://raw.githubusercontent.com/TwiN/gatus/master/.examples/docker-compose-grafana-prometheus/grafana/provisioning/dashboards/gatus.json
+
--- kubernetes/apps/observability/grafana/instance Kustomization: observability/grafana-instance GrafanaDashboard: observability/node-exporter-full

+++ kubernetes/apps/observability/grafana/instance Kustomization: observability/grafana-instance GrafanaDashboard: observability/node-exporter-full

@@ -0,0 +1,20 @@

+---
+apiVersion: grafana.integreatly.org/v1beta1
+kind: GrafanaDashboard
+metadata:
+  labels:
+    app.kubernetes.io/name: grafana-instance
+    kustomize.toolkit.fluxcd.io/name: grafana-instance
+    kustomize.toolkit.fluxcd.io/namespace: observability
+  name: node-exporter-full
+  namespace: observability
+spec:
+  allowCrossNamespaceImport: true
+  datasources:
+  - datasourceName: VictoriaMetrics
+    inputName: DS_PROMETHEUS
+  instanceSelector:
+    matchLabels:
+      dashboards: grafana
+  url: https://grafana.com/api/dashboards/1860/revisions/45/download
+
--- kubernetes/apps/observability/grafana/instance Kustomization: observability/grafana-instance GrafanaDashboard: observability/node-feature-discovery

+++ kubernetes/apps/observability/grafana/instance Kustomization: observability/grafana-instance GrafanaDashboard: observability/node-feature-discovery

@@ -0,0 +1,20 @@

+---
+apiVersion: grafana.integreatly.org/v1beta1
+kind: GrafanaDashboard
+metadata:
+  labels:
+    app.kubernetes.io/name: grafana-instance
+    kustomize.toolkit.fluxcd.io/name: grafana-instance
+    kustomize.toolkit.fluxcd.io/namespace: observability
+  name: node-feature-discovery
+  namespace: observability
+spec:
+  allowCrossNamespaceImport: true
+  datasources:
+  - datasourceName: VictoriaMetrics
+    inputName: DS_PROMETHEUS
+  instanceSelector:
+    matchLabels:
+      dashboards: grafana
+  url: https://raw.githubusercontent.com/kubernetes-sigs/node-feature-discovery/master/examples/grafana-dashboard.json
+
--- kubernetes/apps/observability/grafana/instance Kustomization: observability/grafana-instance GrafanaDashboard: observability/spegel

+++ kubernetes/apps/observability/grafana/instance Kustomization: observability/grafana-instance GrafanaDashboard: observability/spegel

@@ -0,0 +1,20 @@

+---
+apiVersion: grafana.integreatly.org/v1beta1
+kind: GrafanaDashboard
+metadata:
+  labels:
+    app.kubernetes.io/name: grafana-instance
+    kustomize.toolkit.fluxcd.io/name: grafana-instance
+    kustomize.toolkit.fluxcd.io/namespace: observability
+  name: spegel
+  namespace: observability
+spec:
+  allowCrossNamespaceImport: true
+  datasources:
+  - datasourceName: VictoriaMetrics
+    inputName: DS_PROMETHEUS
+  instanceSelector:
+    matchLabels:
+      dashboards: grafana
+  url: https://grafana.com/api/dashboards/18089/revisions/1/download
+
--- kubernetes/apps/observability/grafana/instance Kustomization: observability/grafana-instance GrafanaDashboard: observability/unpackerr

+++ kubernetes/apps/observability/grafana/instance Kustomization: observability/grafana-instance GrafanaDashboard: observability/unpackerr

@@ -0,0 +1,20 @@

+---
+apiVersion: grafana.integreatly.org/v1beta1
+kind: GrafanaDashboard
+metadata:
+  labels:
+    app.kubernetes.io/name: grafana-instance
+    kustomize.toolkit.fluxcd.io/name: grafana-instance
+    kustomize.toolkit.fluxcd.io/namespace: observability
+  name: unpackerr
+  namespace: observability
+spec:
+  allowCrossNamespaceImport: true
+  datasources:
+  - datasourceName: VictoriaMetrics
+    inputName: DS_PROMETHEUS
+  instanceSelector:
+    matchLabels:
+      dashboards: grafana
+  url: https://grafana.com/api/dashboards/18817/revisions/1/download
+
--- kubernetes/apps/observability/grafana/instance Kustomization: observability/grafana-instance GrafanaDashboard: observability/volsync

+++ kubernetes/apps/observability/grafana/instance Kustomization: observability/grafana-instance GrafanaDashboard: observability/volsync

@@ -0,0 +1,20 @@

+---
+apiVersion: grafana.integreatly.org/v1beta1
+kind: GrafanaDashboard
+metadata:
+  labels:
+    app.kubernetes.io/name: grafana-instance
+    kustomize.toolkit.fluxcd.io/name: grafana-instance
+    kustomize.toolkit.fluxcd.io/namespace: observability
+  name: volsync
+  namespace: observability
+spec:
+  allowCrossNamespaceImport: true
+  datasources:
+  - datasourceName: VictoriaMetrics
+    inputName: DS_PROMETHEUS
+  instanceSelector:
+    matchLabels:
+      dashboards: grafana
+  url: https://grafana.com/api/dashboards/21356/revisions/3/download
+
--- kubernetes/apps/observability/grafana/instance Kustomization: observability/grafana-instance GrafanaDashboard: observability/ceph-cluster

+++ kubernetes/apps/observability/grafana/instance Kustomization: observability/grafana-instance GrafanaDashboard: observability/ceph-cluster

@@ -0,0 +1,20 @@

+---
+apiVersion: grafana.integreatly.org/v1beta1
+kind: GrafanaDashboard
+metadata:
+  labels:
+    app.kubernetes.io/name: grafana-instance
+    kustomize.toolkit.fluxcd.io/name: grafana-instance
+    kustomize.toolkit.fluxcd.io/namespace: observability
+  name: ceph-cluster
+  namespace: observability
+spec:
+  allowCrossNamespaceImport: true
+  datasources:
+  - datasourceName: VictoriaMetrics
+    inputName: DS_PROMETHEUS
+  instanceSelector:
+    matchLabels:
+      dashboards: grafana
+  url: https://grafana.com/api/dashboards/2842/revisions/17/download
+
--- kubernetes/apps/observability/grafana/instance Kustomization: observability/grafana-instance GrafanaDashboard: observability/ceph-osd

+++ kubernetes/apps/observability/grafana/instance Kustomization: observability/grafana-instance GrafanaDashboard: observability/ceph-osd

@@ -0,0 +1,20 @@

+---
+apiVersion: grafana.integreatly.org/v1beta1
+kind: GrafanaDashboard
+metadata:
+  labels:
+    app.kubernetes.io/name: grafana-instance
+    kustomize.toolkit.fluxcd.io/name: grafana-instance
+    kustomize.toolkit.fluxcd.io/namespace: observability
+  name: ceph-osd
+  namespace: observability
+spec:
+  allowCrossNamespaceImport: true
+  datasources:
+  - datasourceName: VictoriaMetrics
+    inputName: DS_PROMETHEUS
+  instanceSelector:
+    matchLabels:
+      dashboards: grafana
+  url: https://grafana.com/api/dashboards/5336/revisions/9/download
+
--- kubernetes/apps/observability/grafana/instance Kustomization: observability/grafana-instance GrafanaDashboard: observability/ceph-pools

+++ kubernetes/apps/observability/grafana/instance Kustomization: observability/grafana-instance GrafanaDashboard: observability/ceph-pools

@@ -0,0 +1,20 @@

+---
+apiVersion: grafana.integreatly.org/v1beta1
+kind: GrafanaDashboard
+metadata:
+  labels:
+    app.kubernetes.io/name: grafana-instance
+    kustomize.toolkit.fluxcd.io/name: grafana-instance
+    kustomize.toolkit.fluxcd.io/namespace: observability
+  name: ceph-pools
+  namespace: observability
+spec:
+  allowCrossNamespaceImport: true
+  datasources:
+  - datasourceName: VictoriaMetrics
+    inputName: DS_PROMETHEUS
+  instanceSelector:
+    matchLabels:
+      dashboards: grafana
+  url: https://grafana.com/api/dashboards/5342/revisions/9/download
+
--- kubernetes/apps/observability/grafana/instance Kustomization: observability/grafana-instance GrafanaDashboard: observability/flux-cluster

+++ kubernetes/apps/observability/grafana/instance Kustomization: observability/grafana-instance GrafanaDashboard: observability/flux-cluster

@@ -0,0 +1,20 @@

+---
+apiVersion: grafana.integreatly.org/v1beta1
+kind: GrafanaDashboard
+metadata:
+  labels:
+    app.kubernetes.io/name: grafana-instance
+    kustomize.toolkit.fluxcd.io/name: grafana-instance
+    kustomize.toolkit.fluxcd.io/namespace: observability
+  name: flux-cluster
+  namespace: observability
+spec:
+  allowCrossNamespaceImport: true
+  datasources:
+  - datasourceName: VictoriaMetrics
+    inputName: DS_PROMETHEUS
+  instanceSelector:
+    matchLabels:
+      dashboards: grafana
+  url: https://raw.githubusercontent.com/fluxcd/flux2-monitoring-example/refs/heads/main/monitoring/configs/dashboards/cluster.json
+
--- kubernetes/apps/observability/grafana/instance Kustomization: observability/grafana-instance GrafanaDashboard: observability/flux-control-plane

+++ kubernetes/apps/observability/grafana/instance Kustomization: observability/grafana-instance GrafanaDashboard: observability/flux-control-plane

@@ -0,0 +1,20 @@

+---
+apiVersion: grafana.integreatly.org/v1beta1
+kind: GrafanaDashboard
+metadata:
+  labels:
+    app.kubernetes.io/name: grafana-instance
+    kustomize.toolkit.fluxcd.io/name: grafana-instance
+    kustomize.toolkit.fluxcd.io/namespace: observability
+  name: flux-control-plane
+  namespace: observability
+spec:
+  allowCrossNamespaceImport: true
+  datasources:
+  - datasourceName: VictoriaMetrics
+    inputName: DS_PROMETHEUS
+  instanceSelector:
+    matchLabels:
+      dashboards: grafana
+  url: https://raw.githubusercontent.com/fluxcd/flux2-monitoring-example/refs/heads/main/monitoring/configs/dashboards/control-plane.json
+
--- kubernetes/apps/observability/grafana/instance Kustomization: observability/grafana-instance GrafanaDashboard: observability/flux-k8s-api-performance

+++ kubernetes/apps/observability/grafana/instance Kustomization: observability/grafana-instance GrafanaDashboard: observability/flux-k8s-api-performance

@@ -0,0 +1,20 @@

+---
+apiVersion: grafana.integreatly.org/v1beta1
+kind: GrafanaDashboard
+metadata:
+  labels:
+    app.kubernetes.io/name: grafana-instance
+    kustomize.toolkit.fluxcd.io/name: grafana-instance
+    kustomize.toolkit.fluxcd.io/namespace: observability
+  name: flux-k8s-api-performance
+  namespace: observability
+spec:
+  allowCrossNamespaceImport: true
+  datasources:
+  - datasourceName: VictoriaMetrics
+    inputName: DS_PROMETHEUS
+  instanceSelector:
+    matchLabels:
+      dashboards: grafana
+  url: https://raw.githubusercontent.com/controlplaneio-fluxcd/flux-operator/refs/heads/main/config/monitoring/dashboards/flux-k8s-api-performance.json
+
--- kubernetes/apps/observability/grafana/instance Kustomization: observability/grafana-instance GrafanaDashboard: observability/flux-performance

+++ kubernetes/apps/observability/grafana/instance Kustomization: observability/grafana-instance GrafanaDashboard: observability/flux-performance

@@ -0,0 +1,20 @@

+---
+apiVersion: grafana.integreatly.org/v1beta1
+kind: GrafanaDashboard
+metadata:
+  labels:
+    app.kubernetes.io/name: grafana-instance
+    kustomize.toolkit.fluxcd.io/name: grafana-instance
+    kustomize.toolkit.fluxcd.io/namespace: observability
+  name: flux-performance
+  namespace: observability
+spec:
+  allowCrossNamespaceImport: true
+  datasources:
+  - datasourceName: VictoriaMetrics
+    inputName: DS_PROMETHEUS
+  instanceSelector:
+    matchLabels:
+      dashboards: grafana
+  url: https://raw.githubusercontent.com/controlplaneio-fluxcd/flux-operator/refs/heads/main/config/monitoring/dashboards/flux-performance.json
+
--- kubernetes/apps/observability/grafana/instance Kustomization: observability/grafana-instance ServiceMonitor: observability/grafana

+++ kubernetes/apps/observability/grafana/instance Kustomization: observability/grafana-instance ServiceMonitor: observability/grafana

@@ -0,0 +1,23 @@

+---
+apiVersion: monitoring.coreos.com/v1
+kind: ServiceMonitor
+metadata:
+  labels:
+    app.kubernetes.io/name: grafana-instance
+    kustomize.toolkit.fluxcd.io/name: grafana-instance
+    kustomize.toolkit.fluxcd.io/namespace: observability
+  name: grafana
+  namespace: observability
+spec:
+  endpoints:
+  - honorLabels: true
+    path: /metrics
+    port: grafana
+  jobLabel: grafana
+  namespaceSelector:
+    matchNames:
+    - observability
+  selector:
+    matchLabels:
+      dashboards: grafana
+
--- kubernetes/apps/observability/victoria-logs/collector Kustomization: observability/victoria-logs-collector HelmRelease: observability/victoria-logs-collector

+++ kubernetes/apps/observability/victoria-logs/collector Kustomization: observability/victoria-logs-collector HelmRelease: observability/victoria-logs-collector

@@ -0,0 +1,22 @@

+---
+apiVersion: helm.toolkit.fluxcd.io/v2
+kind: HelmRelease
+metadata:
+  labels:
+    app.kubernetes.io/name: victoria-logs-collector
+    kustomize.toolkit.fluxcd.io/name: victoria-logs-collector
+    kustomize.toolkit.fluxcd.io/namespace: observability
+  name: victoria-logs-collector
+  namespace: observability
+spec:
+  chartRef:
+    kind: OCIRepository
+    name: victoria-logs-collector
+  interval: 1h
+  values:
+    fullnameOverride: victoria-logs-collector
+    podMonitor:
+      enabled: true
+    remoteWrite:
+    - url: http://victoria-logs.observability.svc.cluster.local:9428
+
--- kubernetes/apps/observability/victoria-logs/collector Kustomization: observability/victoria-logs-collector OCIRepository: observability/victoria-logs-collector

+++ kubernetes/apps/observability/victoria-logs/collector Kustomization: observability/victoria-logs-collector OCIRepository: observability/victoria-logs-collector

@@ -0,0 +1,19 @@

+---
+apiVersion: source.toolkit.fluxcd.io/v1
+kind: OCIRepository
+metadata:
+  labels:
+    app.kubernetes.io/name: victoria-logs-collector
+    kustomize.toolkit.fluxcd.io/name: victoria-logs-collector
+    kustomize.toolkit.fluxcd.io/namespace: observability
+  name: victoria-logs-collector
+  namespace: observability
+spec:
+  interval: 15m
+  layerSelector:
+    mediaType: application/vnd.cncf.helm.chart.content.v1.tar+gzip
+    operation: copy
+  ref:
+    tag: 0.3.3
+  url: oci://ghcr.io/victoriametrics/helm-charts/victoria-logs-collector
+

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant