diff --git a/cli/Dockerfile b/cli/Dockerfile
index 42fdd368520d9015ab27622916f8486f70a14c7a..ce619861fa31aacfbd07deeb7f1cf8cc8e659836 100644
--- a/cli/Dockerfile
+++ b/cli/Dockerfile
@@ -28,7 +28,7 @@ RUN curl -L "https://get.helm.sh/helm-${HELM_VERSION}-linux-amd64.tar.gz" | tar
 FROM registry.fedoraproject.org/fedora:35 as flux
 
 # renovate: datasource=github-releases depName=fluxcd/flux2
-ARG FLUX_VERSION=v0.30.2
+ARG FLUX_VERSION=v0.31.0
 ENV FLUX_VERSION=${FLUX_VERSION}
 
 RUN curl -L https://github.com/fluxcd/flux2/releases/download/${FLUX_VERSION}/flux_$(sed 's/^v//g' <<<${FLUX_VERSION})_linux_amd64.tar.gz | tar xvzf - flux \
diff --git a/clusters/k8s01/flux-system/gotk-components.yaml b/clusters/k8s01/flux-system/gotk-components.yaml
index e7e12086cbf5880b82d31a026f0b0906ef98d60e..5fe8f45f4095abb3a514297f682536f40c3d1a9a 100644
--- a/clusters/k8s01/flux-system/gotk-components.yaml
+++ b/clusters/k8s01/flux-system/gotk-components.yaml
@@ -1,6 +1,6 @@
 ---
 # This manifest was generated by flux. DO NOT EDIT.
-# Flux Version: v0.30.2
+# Flux Version: v0.31.0
 # Components: source-controller,kustomize-controller,helm-controller,notification-controller
 apiVersion: v1
 kind: Namespace
@@ -8,7 +8,7 @@ metadata:
   labels:
     app.kubernetes.io/instance: flux-system
     app.kubernetes.io/part-of: flux
-    app.kubernetes.io/version: v0.30.2
+    app.kubernetes.io/version: v0.31.0
     pod-security.kubernetes.io/warn: restricted
     pod-security.kubernetes.io/warn-version: latest
   name: flux-system
@@ -22,7 +22,7 @@ metadata:
   labels:
     app.kubernetes.io/instance: flux-system
     app.kubernetes.io/part-of: flux
-    app.kubernetes.io/version: v0.30.2
+    app.kubernetes.io/version: v0.31.0
   name: alerts.notification.toolkit.fluxcd.io
 spec:
   group: notification.toolkit.fluxcd.io
@@ -243,7 +243,7 @@ metadata:
   labels:
     app.kubernetes.io/instance: flux-system
     app.kubernetes.io/part-of: flux
-    app.kubernetes.io/version: v0.30.2
+    app.kubernetes.io/version: v0.31.0
   name: buckets.source.toolkit.fluxcd.io
 spec:
   group: source.toolkit.fluxcd.io
@@ -753,7 +753,7 @@ metadata:
   labels:
     app.kubernetes.io/instance: flux-system
     app.kubernetes.io/part-of: flux
-    app.kubernetes.io/version: v0.30.2
+    app.kubernetes.io/version: v0.31.0
   name: gitrepositories.source.toolkit.fluxcd.io
 spec:
   group: source.toolkit.fluxcd.io
@@ -1401,6 +1401,15 @@ spec:
                   - type
                   type: object
                 type: array
+              contentConfigChecksum:
+                description: 'ContentConfigChecksum is a checksum of all the configurations
+                  related to the content of the source artifact:  - .spec.ignore  -
+                  .spec.recurseSubmodules  - .spec.included and the checksum of the
+                  included artifacts observed in .status.observedGeneration version
+                  of the object. This can be used to determine if the content of the
+                  included repository has changed. It has the format of `<algo>:<checksum>`,
+                  for example: `sha256:<checksum>`.'
+                type: string
               includedArtifacts:
                 description: IncludedArtifacts contains a list of the last successfully
                   included Artifacts as instructed by GitRepositorySpec.Include.
@@ -1479,7 +1488,7 @@ metadata:
   labels:
     app.kubernetes.io/instance: flux-system
     app.kubernetes.io/part-of: flux
-    app.kubernetes.io/version: v0.30.2
+    app.kubernetes.io/version: v0.31.0
   name: helmcharts.source.toolkit.fluxcd.io
 spec:
   group: source.toolkit.fluxcd.io
@@ -2045,7 +2054,7 @@ metadata:
   labels:
     app.kubernetes.io/instance: flux-system
     app.kubernetes.io/part-of: flux
-    app.kubernetes.io/version: v0.30.2
+    app.kubernetes.io/version: v0.31.0
   name: helmreleases.helm.toolkit.fluxcd.io
 spec:
   group: helm.toolkit.fluxcd.io
@@ -2892,7 +2901,7 @@ metadata:
   labels:
     app.kubernetes.io/instance: flux-system
     app.kubernetes.io/part-of: flux
-    app.kubernetes.io/version: v0.30.2
+    app.kubernetes.io/version: v0.31.0
   name: helmrepositories.source.toolkit.fluxcd.io
 spec:
   group: source.toolkit.fluxcd.io
@@ -3217,6 +3226,13 @@ spec:
                 default: 60s
                 description: Timeout of the index fetch operation, defaults to 60s.
                 type: string
+              type:
+                description: Type of the HelmRepository. When this field is set to  "oci",
+                  the URL field value must be prefixed with "oci://".
+                enum:
+                - default
+                - oci
+                type: string
               url:
                 description: URL of the Helm repository, a valid URL contains at least
                   a protocol and host.
@@ -3373,7 +3389,7 @@ metadata:
   labels:
     app.kubernetes.io/instance: flux-system
     app.kubernetes.io/part-of: flux
-    app.kubernetes.io/version: v0.30.2
+    app.kubernetes.io/version: v0.31.0
   name: kustomizations.kustomize.toolkit.fluxcd.io
 spec:
   group: kustomize.toolkit.fluxcd.io
@@ -4495,7 +4511,7 @@ metadata:
   labels:
     app.kubernetes.io/instance: flux-system
     app.kubernetes.io/part-of: flux
-    app.kubernetes.io/version: v0.30.2
+    app.kubernetes.io/version: v0.31.0
   name: providers.notification.toolkit.fluxcd.io
 spec:
   group: notification.toolkit.fluxcd.io
@@ -4593,6 +4609,7 @@ spec:
                 - opsgenie
                 - alertmanager
                 - grafana
+                - githubdispatch
                 type: string
               username:
                 description: Bot username for this provider
@@ -4700,7 +4717,7 @@ metadata:
   labels:
     app.kubernetes.io/instance: flux-system
     app.kubernetes.io/part-of: flux
-    app.kubernetes.io/version: v0.30.2
+    app.kubernetes.io/version: v0.31.0
   name: receivers.notification.toolkit.fluxcd.io
 spec:
   group: notification.toolkit.fluxcd.io
@@ -4926,7 +4943,7 @@ metadata:
   labels:
     app.kubernetes.io/instance: flux-system
     app.kubernetes.io/part-of: flux
-    app.kubernetes.io/version: v0.30.2
+    app.kubernetes.io/version: v0.31.0
   name: helm-controller
   namespace: flux-system
 ---
@@ -4936,7 +4953,7 @@ metadata:
   labels:
     app.kubernetes.io/instance: flux-system
     app.kubernetes.io/part-of: flux
-    app.kubernetes.io/version: v0.30.2
+    app.kubernetes.io/version: v0.31.0
   name: kustomize-controller
   namespace: flux-system
 ---
@@ -4946,7 +4963,7 @@ metadata:
   labels:
     app.kubernetes.io/instance: flux-system
     app.kubernetes.io/part-of: flux
-    app.kubernetes.io/version: v0.30.2
+    app.kubernetes.io/version: v0.31.0
   name: notification-controller
   namespace: flux-system
 ---
@@ -4956,7 +4973,7 @@ metadata:
   labels:
     app.kubernetes.io/instance: flux-system
     app.kubernetes.io/part-of: flux
-    app.kubernetes.io/version: v0.30.2
+    app.kubernetes.io/version: v0.31.0
   name: source-controller
   namespace: flux-system
 ---
@@ -4966,7 +4983,7 @@ metadata:
   labels:
     app.kubernetes.io/instance: flux-system
     app.kubernetes.io/part-of: flux
-    app.kubernetes.io/version: v0.30.2
+    app.kubernetes.io/version: v0.31.0
   name: crd-controller-flux-system
 rules:
 - apiGroups:
@@ -5056,7 +5073,7 @@ metadata:
   labels:
     app.kubernetes.io/instance: flux-system
     app.kubernetes.io/part-of: flux
-    app.kubernetes.io/version: v0.30.2
+    app.kubernetes.io/version: v0.31.0
   name: cluster-reconciler-flux-system
 roleRef:
   apiGroup: rbac.authorization.k8s.io
@@ -5076,7 +5093,7 @@ metadata:
   labels:
     app.kubernetes.io/instance: flux-system
     app.kubernetes.io/part-of: flux
-    app.kubernetes.io/version: v0.30.2
+    app.kubernetes.io/version: v0.31.0
   name: crd-controller-flux-system
 roleRef:
   apiGroup: rbac.authorization.k8s.io
@@ -5108,7 +5125,7 @@ metadata:
   labels:
     app.kubernetes.io/instance: flux-system
     app.kubernetes.io/part-of: flux
-    app.kubernetes.io/version: v0.30.2
+    app.kubernetes.io/version: v0.31.0
     control-plane: controller
   name: notification-controller
   namespace: flux-system
@@ -5128,7 +5145,7 @@ metadata:
   labels:
     app.kubernetes.io/instance: flux-system
     app.kubernetes.io/part-of: flux
-    app.kubernetes.io/version: v0.30.2
+    app.kubernetes.io/version: v0.31.0
     control-plane: controller
   name: source-controller
   namespace: flux-system
@@ -5148,7 +5165,7 @@ metadata:
   labels:
     app.kubernetes.io/instance: flux-system
     app.kubernetes.io/part-of: flux
-    app.kubernetes.io/version: v0.30.2
+    app.kubernetes.io/version: v0.31.0
     control-plane: controller
   name: webhook-receiver
   namespace: flux-system
@@ -5168,7 +5185,7 @@ metadata:
   labels:
     app.kubernetes.io/instance: flux-system
     app.kubernetes.io/part-of: flux
-    app.kubernetes.io/version: v0.30.2
+    app.kubernetes.io/version: v0.31.0
     control-plane: controller
   name: helm-controller
   namespace: flux-system
@@ -5197,7 +5214,7 @@ spec:
           valueFrom:
             fieldRef:
               fieldPath: metadata.namespace
-        image: ghcr.io/fluxcd/helm-controller:v0.21.0
+        image: ghcr.io/fluxcd/helm-controller:v0.22.0
         imagePullPolicy: IfNotPresent
         livenessProbe:
           httpGet:
@@ -5250,7 +5267,7 @@ metadata:
   labels:
     app.kubernetes.io/instance: flux-system
     app.kubernetes.io/part-of: flux
-    app.kubernetes.io/version: v0.30.2
+    app.kubernetes.io/version: v0.31.0
     control-plane: controller
   name: kustomize-controller
   namespace: flux-system
@@ -5279,7 +5296,7 @@ spec:
           valueFrom:
             fieldRef:
               fieldPath: metadata.namespace
-        image: ghcr.io/fluxcd/kustomize-controller:v0.25.0
+        image: ghcr.io/fluxcd/kustomize-controller:v0.26.0
         imagePullPolicy: IfNotPresent
         livenessProbe:
           httpGet:
@@ -5332,7 +5349,7 @@ metadata:
   labels:
     app.kubernetes.io/instance: flux-system
     app.kubernetes.io/part-of: flux
-    app.kubernetes.io/version: v0.30.2
+    app.kubernetes.io/version: v0.31.0
     control-plane: controller
   name: notification-controller
   namespace: flux-system
@@ -5360,7 +5377,7 @@ spec:
           valueFrom:
             fieldRef:
               fieldPath: metadata.namespace
-        image: ghcr.io/fluxcd/notification-controller:v0.23.5
+        image: ghcr.io/fluxcd/notification-controller:v0.24.0
         imagePullPolicy: IfNotPresent
         livenessProbe:
           httpGet:
@@ -5419,7 +5436,7 @@ metadata:
   labels:
     app.kubernetes.io/instance: flux-system
     app.kubernetes.io/part-of: flux
-    app.kubernetes.io/version: v0.30.2
+    app.kubernetes.io/version: v0.31.0
     control-plane: controller
   name: source-controller
   namespace: flux-system
@@ -5452,7 +5469,7 @@ spec:
           valueFrom:
             fieldRef:
               fieldPath: metadata.namespace
-        image: ghcr.io/fluxcd/source-controller:v0.24.4
+        image: ghcr.io/fluxcd/source-controller:v0.25.3
         imagePullPolicy: IfNotPresent
         livenessProbe:
           httpGet:
@@ -5512,7 +5529,7 @@ metadata:
   labels:
     app.kubernetes.io/instance: flux-system
     app.kubernetes.io/part-of: flux
-    app.kubernetes.io/version: v0.30.2
+    app.kubernetes.io/version: v0.31.0
   name: allow-egress
   namespace: flux-system
 spec:
@@ -5532,7 +5549,7 @@ metadata:
   labels:
     app.kubernetes.io/instance: flux-system
     app.kubernetes.io/part-of: flux
-    app.kubernetes.io/version: v0.30.2
+    app.kubernetes.io/version: v0.31.0
   name: allow-scraping
   namespace: flux-system
 spec:
@@ -5552,7 +5569,7 @@ metadata:
   labels:
     app.kubernetes.io/instance: flux-system
     app.kubernetes.io/part-of: flux
-    app.kubernetes.io/version: v0.30.2
+    app.kubernetes.io/version: v0.31.0
   name: allow-webhooks
   namespace: flux-system
 spec: