diff --git a/kubernetes/apps/observability/kube-prometheus-stack/crds/helmrelease.yaml b/kubernetes/apps/observability/kube-prometheus-stack/crds/helmrelease.yaml
new file mode 100644
index 00000000..712b937a
--- /dev/null
+++ b/kubernetes/apps/observability/kube-prometheus-stack/crds/helmrelease.yaml
@@ -0,0 +1,23 @@
+---
+# yaml-language-server: $schema=https://raw.githubusercontent.com/fluxcd-community/flux2-schemas/main/helmrelease-helm-v2.json
+apiVersion: helm.toolkit.fluxcd.io/v2
+kind: HelmRelease
+metadata:
+  name: kube-prometheus-stack-crds
+spec:
+  interval: 30m
+  chart:
+    spec:
+      chart: prometheus-operator-crds
+      version: 17.0.2
+      sourceRef:
+        kind: HelmRepository
+        name: prometheus-community
+        namespace: flux-system
+  install:
+    remediation:
+      retries: 3
+  upgrade:
+    cleanupOnFail: true
+    remediation:
+      retries: 3
diff --git a/kubernetes/apps/observability/kube-prometheus-stack/crds/kustomization.yaml b/kubernetes/apps/observability/kube-prometheus-stack/crds/kustomization.yaml
new file mode 100644
index 00000000..17cbc72b
--- /dev/null
+++ b/kubernetes/apps/observability/kube-prometheus-stack/crds/kustomization.yaml
@@ -0,0 +1,6 @@
+---
+# yaml-language-server: $schema=https://json.schemastore.org/kustomization
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+resources:
+  - ./helmrelease.yaml