diff --git a/.github/workflows/generate.yaml b/.github/workflows/generate.yaml
index 97a9d37bb39d124ccb4922773bd7bf63d5d95e1f..bd349685fafd89c88fd726a0a9f23a4921954d5c 100644
--- a/.github/workflows/generate.yaml
+++ b/.github/workflows/generate.yaml
@@ -14,7 +14,7 @@ jobs:
       - uses: actions/checkout@v2
       - name: download and setup generator binary
         run: |       
-          wget https://github.com/slok/sloth/releases/download/v0.8.0/sloth-linux-amd64
+          wget https://github.com/slok/sloth/releases/download/v0.9.0/sloth-linux-amd64
           chmod +x sloth-linux-amd64
           ./sloth-linux-amd64 generate -i ./examples/getting-started.yml -o ./examples/_gen/getting-started.yml
           ./sloth-linux-amd64 generate -i ./examples/no-alerts.yml -o ./examples/_gen/no-alerts.yml
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 87e428a3c0eee4a9489c5930aeaa58a3aa1717ce..64f1c5e8be3bb2ec075a004761f71782b1eae819 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,8 @@
 
 ## [Unreleased]
 
+## [v0.9.0] - 2021-11-15
+
 ### Added
 
 - Added spec for declaring custom SLO period windows.
@@ -141,7 +143,8 @@
 - Support raw query based SLI.
 - Kubernetes (prometheus-operator) CRD generation support.
 
-[unreleased]: https://github.com/slok/sloth/compare/v0.8.0...HEAD
+[unreleased]: https://github.com/slok/sloth/compare/v0.9.0...HEAD
+[v0.9.0]: https://github.com/slok/sloth/compare/v0.8.0...v0.9.0
 [v0.8.0]: https://github.com/slok/sloth/compare/v0.7.0...v0.8.0
 [v0.7.0]: https://github.com/slok/sloth/compare/v0.6.0...v0.7.0
 [v0.6.0]: https://github.com/slok/sloth/compare/v0.5.0...v0.6.0
diff --git a/deploy/kubernetes/helm/sloth/Chart.yaml b/deploy/kubernetes/helm/sloth/Chart.yaml
index 220a33a93f9b292ade531987ece15c19fff6293e..c656e67a887282c86985a4441c2e82c36cd5fbbc 100644
--- a/deploy/kubernetes/helm/sloth/Chart.yaml
+++ b/deploy/kubernetes/helm/sloth/Chart.yaml
@@ -4,4 +4,4 @@ description: Base chart for Sloth.
 type: application
 home: https://github.com/slok/sloth
 kubeVersion: ">= 1.19.0-0"
-version: 0.3.1
+version: 0.4.0
diff --git a/deploy/kubernetes/helm/sloth/tests/testdata/output/cluster_role_binding_custom.yaml b/deploy/kubernetes/helm/sloth/tests/testdata/output/cluster_role_binding_custom.yaml
index 464d80a7c74e5e9ec12fc32ccbe6d3eb9a0e7a1f..39fabef6a4f27e2c07509af39adb1f2ebe4da161 100644
--- a/deploy/kubernetes/helm/sloth/tests/testdata/output/cluster_role_binding_custom.yaml
+++ b/deploy/kubernetes/helm/sloth/tests/testdata/output/cluster_role_binding_custom.yaml
@@ -5,7 +5,7 @@ kind: ClusterRoleBinding
 metadata:
   name: sloth-test
   labels:
-    helm.sh/chart: sloth-0.3.1
+    helm.sh/chart: sloth-0.4.0
     app.kubernetes.io/managed-by: Helm
     app: sloth
     app.kubernetes.io/name: sloth
diff --git a/deploy/kubernetes/helm/sloth/tests/testdata/output/cluster_role_binding_default.yaml b/deploy/kubernetes/helm/sloth/tests/testdata/output/cluster_role_binding_default.yaml
index 2b58b53dd348b5cfd5ab0ea4a6a2c57dcaa4e8dc..3bfc96a0e4e85a4a4955d31060c9cd6786115a1c 100644
--- a/deploy/kubernetes/helm/sloth/tests/testdata/output/cluster_role_binding_default.yaml
+++ b/deploy/kubernetes/helm/sloth/tests/testdata/output/cluster_role_binding_default.yaml
@@ -5,7 +5,7 @@ kind: ClusterRoleBinding
 metadata:
   name: sloth
   labels:
-    helm.sh/chart: sloth-0.3.1
+    helm.sh/chart: sloth-0.4.0
     app.kubernetes.io/managed-by: Helm
     app: sloth
     app.kubernetes.io/name: sloth
diff --git a/deploy/kubernetes/helm/sloth/tests/testdata/output/cluster_role_custom.yaml b/deploy/kubernetes/helm/sloth/tests/testdata/output/cluster_role_custom.yaml
index 2944e180e611fa8f92f4d878e9904bab094f13f2..2f16b2f1c6cd5c56ae002d31c935632a4381763b 100644
--- a/deploy/kubernetes/helm/sloth/tests/testdata/output/cluster_role_custom.yaml
+++ b/deploy/kubernetes/helm/sloth/tests/testdata/output/cluster_role_custom.yaml
@@ -5,7 +5,7 @@ kind: ClusterRole
 metadata:
   name: sloth-test
   labels:
-    helm.sh/chart: sloth-0.3.1
+    helm.sh/chart: sloth-0.4.0
     app.kubernetes.io/managed-by: Helm
     app: sloth
     app.kubernetes.io/name: sloth
diff --git a/deploy/kubernetes/helm/sloth/tests/testdata/output/cluster_role_default.yaml b/deploy/kubernetes/helm/sloth/tests/testdata/output/cluster_role_default.yaml
index 222c08d6c84e7d40101b8e376c977081caa9c3a7..6341e505d3e77388a1180fae3a0fcc05a07d22fe 100644
--- a/deploy/kubernetes/helm/sloth/tests/testdata/output/cluster_role_default.yaml
+++ b/deploy/kubernetes/helm/sloth/tests/testdata/output/cluster_role_default.yaml
@@ -5,7 +5,7 @@ kind: ClusterRole
 metadata:
   name: sloth
   labels:
-    helm.sh/chart: sloth-0.3.1
+    helm.sh/chart: sloth-0.4.0
     app.kubernetes.io/managed-by: Helm
     app: sloth
     app.kubernetes.io/name: sloth
diff --git a/deploy/kubernetes/helm/sloth/tests/testdata/output/configmap_slo_config.yaml b/deploy/kubernetes/helm/sloth/tests/testdata/output/configmap_slo_config.yaml
index 1b3f01cdc842bff815e52f6cf35fae713665fa31..99ddf2b2bce4936a295203da78123b114fc1c54c 100644
--- a/deploy/kubernetes/helm/sloth/tests/testdata/output/configmap_slo_config.yaml
+++ b/deploy/kubernetes/helm/sloth/tests/testdata/output/configmap_slo_config.yaml
@@ -6,7 +6,7 @@ metadata:
   name: sloth-test
   namespace: custom
   labels:
-    helm.sh/chart: sloth-0.3.1
+    helm.sh/chart: sloth-0.4.0
     app.kubernetes.io/managed-by: Helm
     app: sloth
     app.kubernetes.io/name: sloth
diff --git a/deploy/kubernetes/helm/sloth/tests/testdata/output/deployment_custom.yaml b/deploy/kubernetes/helm/sloth/tests/testdata/output/deployment_custom.yaml
index 102da508ccab0c18ed93d5541f99f1a7aee0f1d7..1fc4cb9c1e6b7a1e14d850e7a8a70fa4fac9e996 100644
--- a/deploy/kubernetes/helm/sloth/tests/testdata/output/deployment_custom.yaml
+++ b/deploy/kubernetes/helm/sloth/tests/testdata/output/deployment_custom.yaml
@@ -6,7 +6,7 @@ metadata:
   name: sloth-test
   namespace: custom
   labels:
-    helm.sh/chart: sloth-0.3.1
+    helm.sh/chart: sloth-0.4.0
     app.kubernetes.io/managed-by: Helm
     app: sloth
     app.kubernetes.io/name: sloth
@@ -22,7 +22,7 @@ spec:
   template:
     metadata:
       labels:
-        helm.sh/chart: sloth-0.3.1
+        helm.sh/chart: sloth-0.4.0
         app.kubernetes.io/managed-by: Helm
         app: sloth
         app.kubernetes.io/name: sloth
diff --git a/deploy/kubernetes/helm/sloth/tests/testdata/output/deployment_custom_no_extras.yaml b/deploy/kubernetes/helm/sloth/tests/testdata/output/deployment_custom_no_extras.yaml
index 2fdec6de21d86f2d0725d60e6d0c5187586a2f27..1a58bcbd555126c4f635342778fec872af9d9e94 100644
--- a/deploy/kubernetes/helm/sloth/tests/testdata/output/deployment_custom_no_extras.yaml
+++ b/deploy/kubernetes/helm/sloth/tests/testdata/output/deployment_custom_no_extras.yaml
@@ -6,7 +6,7 @@ metadata:
   name: sloth-test
   namespace: custom
   labels:
-    helm.sh/chart: sloth-0.3.1
+    helm.sh/chart: sloth-0.4.0
     app.kubernetes.io/managed-by: Helm
     app: sloth
     app.kubernetes.io/name: sloth
@@ -22,7 +22,7 @@ spec:
   template:
     metadata:
       labels:
-        helm.sh/chart: sloth-0.3.1
+        helm.sh/chart: sloth-0.4.0
         app.kubernetes.io/managed-by: Helm
         app: sloth
         app.kubernetes.io/name: sloth
diff --git a/deploy/kubernetes/helm/sloth/tests/testdata/output/deployment_custom_slo_config.yaml b/deploy/kubernetes/helm/sloth/tests/testdata/output/deployment_custom_slo_config.yaml
index 2d08b55268fccb33e69dc0560206e74855701d57..0a56958304ee235eabeefdc4078c469c977b3212 100644
--- a/deploy/kubernetes/helm/sloth/tests/testdata/output/deployment_custom_slo_config.yaml
+++ b/deploy/kubernetes/helm/sloth/tests/testdata/output/deployment_custom_slo_config.yaml
@@ -6,7 +6,7 @@ metadata:
   name: sloth-test
   namespace: custom
   labels:
-    helm.sh/chart: sloth-0.3.1
+    helm.sh/chart: sloth-0.4.0
     app.kubernetes.io/managed-by: Helm
     app: sloth
     app.kubernetes.io/name: sloth
@@ -22,7 +22,7 @@ spec:
   template:
     metadata:
       labels:
-        helm.sh/chart: sloth-0.3.1
+        helm.sh/chart: sloth-0.4.0
         app.kubernetes.io/managed-by: Helm
         app: sloth
         app.kubernetes.io/name: sloth
diff --git a/deploy/kubernetes/helm/sloth/tests/testdata/output/deployment_default.yaml b/deploy/kubernetes/helm/sloth/tests/testdata/output/deployment_default.yaml
index a4892c22166f75c22f73d366a3da1e4e45050f59..433134d6d7d371db3ed7ffdfbc918aa6a86762ee 100644
--- a/deploy/kubernetes/helm/sloth/tests/testdata/output/deployment_default.yaml
+++ b/deploy/kubernetes/helm/sloth/tests/testdata/output/deployment_default.yaml
@@ -6,7 +6,7 @@ metadata:
   name: sloth
   namespace: default
   labels:
-    helm.sh/chart: sloth-0.3.1
+    helm.sh/chart: sloth-0.4.0
     app.kubernetes.io/managed-by: Helm
     app: sloth
     app.kubernetes.io/name: sloth
@@ -21,7 +21,7 @@ spec:
   template:
     metadata:
       labels:
-        helm.sh/chart: sloth-0.3.1
+        helm.sh/chart: sloth-0.4.0
         app.kubernetes.io/managed-by: Helm
         app: sloth
         app.kubernetes.io/name: sloth
@@ -32,7 +32,7 @@ spec:
       serviceAccountName: sloth
       containers:
         - name: sloth
-          image: ghcr.io/slok/sloth:v0.8.0
+          image: ghcr.io/slok/sloth:v0.9.0
           args:
             - kubernetes-controller
             - --sli-plugins-path=/plugins
diff --git a/deploy/kubernetes/helm/sloth/tests/testdata/output/pod_monitor_custom.yaml b/deploy/kubernetes/helm/sloth/tests/testdata/output/pod_monitor_custom.yaml
index 2e26e88bc508d7cd98531c6f6f9d63b2888288ac..7f640fdc6c135616b56da7261666386645989293 100644
--- a/deploy/kubernetes/helm/sloth/tests/testdata/output/pod_monitor_custom.yaml
+++ b/deploy/kubernetes/helm/sloth/tests/testdata/output/pod_monitor_custom.yaml
@@ -6,7 +6,7 @@ metadata:
   name: sloth-test
   namespace: custom
   labels:
-    helm.sh/chart: sloth-0.3.1
+    helm.sh/chart: sloth-0.4.0
     app.kubernetes.io/managed-by: Helm
     app: sloth
     app.kubernetes.io/name: sloth
diff --git a/deploy/kubernetes/helm/sloth/tests/testdata/output/pod_monitor_default.yaml b/deploy/kubernetes/helm/sloth/tests/testdata/output/pod_monitor_default.yaml
index 251f63c945915fa9b30bacb5a684888ffc33ff71..5767a079e623a9d82802a35fd4987d3f73d5a75f 100644
--- a/deploy/kubernetes/helm/sloth/tests/testdata/output/pod_monitor_default.yaml
+++ b/deploy/kubernetes/helm/sloth/tests/testdata/output/pod_monitor_default.yaml
@@ -6,7 +6,7 @@ metadata:
   name: sloth
   namespace: default
   labels:
-    helm.sh/chart: sloth-0.3.1
+    helm.sh/chart: sloth-0.4.0
     app.kubernetes.io/managed-by: Helm
     app: sloth
     app.kubernetes.io/name: sloth
diff --git a/deploy/kubernetes/helm/sloth/tests/testdata/output/sa_custom.yaml b/deploy/kubernetes/helm/sloth/tests/testdata/output/sa_custom.yaml
index 7a0815d6b5c12cddb50c7ba849ba45214aca2043..d6eff4c6f10f751084f8f2285edd7015f0d10357 100644
--- a/deploy/kubernetes/helm/sloth/tests/testdata/output/sa_custom.yaml
+++ b/deploy/kubernetes/helm/sloth/tests/testdata/output/sa_custom.yaml
@@ -6,7 +6,7 @@ metadata:
   name: sloth-test
   namespace: custom
   labels:
-    helm.sh/chart: sloth-0.3.1
+    helm.sh/chart: sloth-0.4.0
     app.kubernetes.io/managed-by: Helm
     app: sloth
     app.kubernetes.io/name: sloth
diff --git a/deploy/kubernetes/helm/sloth/tests/testdata/output/sa_default.yaml b/deploy/kubernetes/helm/sloth/tests/testdata/output/sa_default.yaml
index a6164dead615f28001652fb191cdf1ee667750ed..09ed18e5bebf82dd063aea16e438db55ff3a1c41 100644
--- a/deploy/kubernetes/helm/sloth/tests/testdata/output/sa_default.yaml
+++ b/deploy/kubernetes/helm/sloth/tests/testdata/output/sa_default.yaml
@@ -6,7 +6,7 @@ metadata:
   name: sloth
   namespace: default
   labels:
-    helm.sh/chart: sloth-0.3.1
+    helm.sh/chart: sloth-0.4.0
     app.kubernetes.io/managed-by: Helm
     app: sloth
     app.kubernetes.io/name: sloth
diff --git a/deploy/kubernetes/helm/sloth/values.yaml b/deploy/kubernetes/helm/sloth/values.yaml
index cee72d63d690991a919381aa2dc5022da859e97f..a77248eb2ed4c3193c60b91cccfd52d479f004e7 100644
--- a/deploy/kubernetes/helm/sloth/values.yaml
+++ b/deploy/kubernetes/helm/sloth/values.yaml
@@ -3,7 +3,7 @@ labels: {}
 
 image:
   repository: ghcr.io/slok/sloth
-  tag: v0.8.0
+  tag: v0.9.0
 
 sloth:
   resyncInterval: ""    # The controller resync interval duration (e.g 15m).
diff --git a/deploy/kubernetes/raw/sloth-with-common-plugins.yaml b/deploy/kubernetes/raw/sloth-with-common-plugins.yaml
index 43d32f70e24463c7aa0f3d3a7b7cc215ff546797..20eda74dab2eb29889dc6915a5f99a53c883742f 100644
--- a/deploy/kubernetes/raw/sloth-with-common-plugins.yaml
+++ b/deploy/kubernetes/raw/sloth-with-common-plugins.yaml
@@ -6,7 +6,7 @@ metadata:
   name: sloth
   namespace: monitoring
   labels:
-    helm.sh/chart: sloth-0.3.1
+    helm.sh/chart: sloth-0.4.0
     app.kubernetes.io/managed-by: Helm
     app: sloth
     app.kubernetes.io/name: sloth
@@ -18,7 +18,7 @@ kind: ClusterRole
 metadata:
   name: sloth
   labels:
-    helm.sh/chart: sloth-0.3.1
+    helm.sh/chart: sloth-0.4.0
     app.kubernetes.io/managed-by: Helm
     app: sloth
     app.kubernetes.io/name: sloth
@@ -38,7 +38,7 @@ kind: ClusterRoleBinding
 metadata:
   name: sloth
   labels:
-    helm.sh/chart: sloth-0.3.1
+    helm.sh/chart: sloth-0.4.0
     app.kubernetes.io/managed-by: Helm
     app: sloth
     app.kubernetes.io/name: sloth
@@ -59,7 +59,7 @@ metadata:
   name: sloth
   namespace: monitoring
   labels:
-    helm.sh/chart: sloth-0.3.1
+    helm.sh/chart: sloth-0.4.0
     app.kubernetes.io/managed-by: Helm
     app: sloth
     app.kubernetes.io/name: sloth
@@ -74,7 +74,7 @@ spec:
   template:
     metadata:
       labels:
-        helm.sh/chart: sloth-0.3.1
+        helm.sh/chart: sloth-0.4.0
         app.kubernetes.io/managed-by: Helm
         app: sloth
         app.kubernetes.io/name: sloth
@@ -85,7 +85,7 @@ spec:
       serviceAccountName: sloth
       containers:
         - name: sloth
-          image: ghcr.io/slok/sloth:v0.8.0
+          image: ghcr.io/slok/sloth:v0.9.0
           args:
             - kubernetes-controller
             - --sli-plugins-path=/plugins
@@ -130,7 +130,7 @@ metadata:
   name: sloth
   namespace: monitoring
   labels:
-    helm.sh/chart: sloth-0.3.1
+    helm.sh/chart: sloth-0.4.0
     app.kubernetes.io/managed-by: Helm
     app: sloth
     app.kubernetes.io/name: sloth
diff --git a/deploy/kubernetes/raw/sloth.yaml b/deploy/kubernetes/raw/sloth.yaml
index ba0b6466ff5ecb5fc15205f23d3f40e8f5d7ba74..677c9c87bce3f022f8cfd9165b1928e46ecb037c 100644
--- a/deploy/kubernetes/raw/sloth.yaml
+++ b/deploy/kubernetes/raw/sloth.yaml
@@ -6,7 +6,7 @@ metadata:
   name: sloth
   namespace: monitoring
   labels:
-    helm.sh/chart: sloth-0.3.1
+    helm.sh/chart: sloth-0.4.0
     app.kubernetes.io/managed-by: Helm
     app: sloth
     app.kubernetes.io/name: sloth
@@ -18,7 +18,7 @@ kind: ClusterRole
 metadata:
   name: sloth
   labels:
-    helm.sh/chart: sloth-0.3.1
+    helm.sh/chart: sloth-0.4.0
     app.kubernetes.io/managed-by: Helm
     app: sloth
     app.kubernetes.io/name: sloth
@@ -38,7 +38,7 @@ kind: ClusterRoleBinding
 metadata:
   name: sloth
   labels:
-    helm.sh/chart: sloth-0.3.1
+    helm.sh/chart: sloth-0.4.0
     app.kubernetes.io/managed-by: Helm
     app: sloth
     app.kubernetes.io/name: sloth
@@ -59,7 +59,7 @@ metadata:
   name: sloth
   namespace: monitoring
   labels:
-    helm.sh/chart: sloth-0.3.1
+    helm.sh/chart: sloth-0.4.0
     app.kubernetes.io/managed-by: Helm
     app: sloth
     app.kubernetes.io/name: sloth
@@ -74,7 +74,7 @@ spec:
   template:
     metadata:
       labels:
-        helm.sh/chart: sloth-0.3.1
+        helm.sh/chart: sloth-0.4.0
         app.kubernetes.io/managed-by: Helm
         app: sloth
         app.kubernetes.io/name: sloth
@@ -85,7 +85,7 @@ spec:
       serviceAccountName: sloth
       containers:
         - name: sloth
-          image: ghcr.io/slok/sloth:v0.8.0
+          image: ghcr.io/slok/sloth:v0.9.0
           args:
             - kubernetes-controller
           ports:
@@ -106,7 +106,7 @@ metadata:
   name: sloth
   namespace: monitoring
   labels:
-    helm.sh/chart: sloth-0.3.1
+    helm.sh/chart: sloth-0.4.0
     app.kubernetes.io/managed-by: Helm
     app: sloth
     app.kubernetes.io/name: sloth