diff --git a/base/flux/gotk-components.yaml b/base/flux/gotk-components.yaml
index 19829b8525c1c8cdfb1b6830dbdc621ca2d56ea2..44a810ac9ee790fb5f468a6aba07e928504f2075 100644
--- a/base/flux/gotk-components.yaml
+++ b/base/flux/gotk-components.yaml
@@ -1,5 +1,6 @@
 ---
-# Flux Version: v0.26.1
+# This manifest was generated by flux. DO NOT EDIT.
+# Flux Version: v0.27.0
 # Components: source-controller,kustomize-controller,helm-controller,notification-controller
 apiVersion: v1
 kind: Namespace
@@ -7,7 +8,7 @@ metadata:
   labels:
     app.kubernetes.io/instance: flux-system
     app.kubernetes.io/part-of: flux
-    app.kubernetes.io/version: v0.26.1
+    app.kubernetes.io/version: v0.27.0
     pod-security.kubernetes.io/warn: restricted
     pod-security.kubernetes.io/warn-version: latest
   name: flux-system
@@ -21,7 +22,7 @@ metadata:
   labels:
     app.kubernetes.io/instance: flux-system
     app.kubernetes.io/part-of: flux
-    app.kubernetes.io/version: v0.26.1
+    app.kubernetes.io/version: v0.27.0
   name: alerts.notification.toolkit.fluxcd.io
 spec:
   group: notification.toolkit.fluxcd.io
@@ -93,6 +94,15 @@ spec:
                       - ImagePolicy
                       - ImageUpdateAutomation
                       type: string
+                    matchLabels:
+                      additionalProperties:
+                        type: string
+                      description: MatchLabels is a map of {key,value} pairs. A single
+                        {key,value} in the matchLabels map is equivalent to an element
+                        of matchExpressions, whose key field is "key", the operator
+                        is "In", and the values array contains only "value". The requirements
+                        are ANDed.
+                      type: object
                     name:
                       description: Name of the referent
                       maxLength: 53
@@ -228,12 +238,12 @@ apiVersion: apiextensions.k8s.io/v1
 kind: CustomResourceDefinition
 metadata:
   annotations:
-    controller-gen.kubebuilder.io/version: v0.5.0
+    controller-gen.kubebuilder.io/version: v0.7.0
   creationTimestamp: null
   labels:
     app.kubernetes.io/instance: flux-system
     app.kubernetes.io/part-of: flux
-    app.kubernetes.io/version: v0.26.1
+    app.kubernetes.io/version: v0.27.0
   name: buckets.source.toolkit.fluxcd.io
 spec:
   group: source.toolkit.fluxcd.io
@@ -349,8 +359,8 @@ spec:
                   of this source.
                 type: boolean
               timeout:
-                default: 20s
-                description: The timeout for download operations, defaults to 20s.
+                default: 60s
+                description: The timeout for download operations, defaults to 60s.
                 type: string
             required:
             - bucketName
@@ -488,12 +498,12 @@ apiVersion: apiextensions.k8s.io/v1
 kind: CustomResourceDefinition
 metadata:
   annotations:
-    controller-gen.kubebuilder.io/version: v0.5.0
+    controller-gen.kubebuilder.io/version: v0.7.0
   creationTimestamp: null
   labels:
     app.kubernetes.io/instance: flux-system
     app.kubernetes.io/part-of: flux
-    app.kubernetes.io/version: v0.26.1
+    app.kubernetes.io/version: v0.27.0
   name: gitrepositories.source.toolkit.fluxcd.io
 spec:
   group: source.toolkit.fluxcd.io
@@ -651,9 +661,9 @@ spec:
                   of this source.
                 type: boolean
               timeout:
-                default: 20s
+                default: 60s
                 description: The timeout for remote Git operations like cloning, defaults
-                  to 20s.
+                  to 60s.
                 type: string
               url:
                 description: The repository URL, can be a HTTP/S or SSH address.
@@ -847,12 +857,12 @@ apiVersion: apiextensions.k8s.io/v1
 kind: CustomResourceDefinition
 metadata:
   annotations:
-    controller-gen.kubebuilder.io/version: v0.5.0
+    controller-gen.kubebuilder.io/version: v0.7.0
   creationTimestamp: null
   labels:
     app.kubernetes.io/instance: flux-system
     app.kubernetes.io/part-of: flux
-    app.kubernetes.io/version: v0.26.1
+    app.kubernetes.io/version: v0.27.0
   name: helmcharts.source.toolkit.fluxcd.io
 spec:
   group: source.toolkit.fluxcd.io
@@ -1136,7 +1146,7 @@ metadata:
   labels:
     app.kubernetes.io/instance: flux-system
     app.kubernetes.io/part-of: flux
-    app.kubernetes.io/version: v0.26.1
+    app.kubernetes.io/version: v0.27.0
   name: helmreleases.helm.toolkit.fluxcd.io
 spec:
   group: helm.toolkit.fluxcd.io
@@ -1628,6 +1638,10 @@ spec:
                     description: DisableHooks prevents hooks from running during the
                       Helm rollback action.
                     type: boolean
+                  disableWait:
+                    description: DisableWait disables waiting for all the resources
+                      to be deleted after a Helm uninstall is performed.
+                    type: boolean
                   keepHistory:
                     description: KeepHistory tells Helm to remove all associated resources
                       and mark the release as deleted, but retain the release history.
@@ -1909,12 +1923,12 @@ apiVersion: apiextensions.k8s.io/v1
 kind: CustomResourceDefinition
 metadata:
   annotations:
-    controller-gen.kubebuilder.io/version: v0.5.0
+    controller-gen.kubebuilder.io/version: v0.7.0
   creationTimestamp: null
   labels:
     app.kubernetes.io/instance: flux-system
     app.kubernetes.io/part-of: flux
-    app.kubernetes.io/version: v0.26.1
+    app.kubernetes.io/version: v0.27.0
   name: helmrepositories.source.toolkit.fluxcd.io
 spec:
   group: source.toolkit.fluxcd.io
@@ -2161,7 +2175,7 @@ metadata:
   labels:
     app.kubernetes.io/instance: flux-system
     app.kubernetes.io/part-of: flux
-    app.kubernetes.io/version: v0.26.1
+    app.kubernetes.io/version: v0.27.0
   name: kustomizations.kustomize.toolkit.fluxcd.io
 spec:
   group: kustomize.toolkit.fluxcd.io
@@ -3050,6 +3064,14 @@ spec:
                           maxLength: 253
                           minLength: 1
                           type: string
+                        optional:
+                          default: false
+                          description: Optional indicates whether the referenced resource
+                            must exist, or whether to tolerate its absence. If true
+                            and the referenced resource is absent, proceed as if the
+                            resource was present but empty, without any variables
+                            defined.
+                          type: boolean
                       required:
                       - kind
                       - name
@@ -3262,7 +3284,7 @@ metadata:
   labels:
     app.kubernetes.io/instance: flux-system
     app.kubernetes.io/part-of: flux
-    app.kubernetes.io/version: v0.26.1
+    app.kubernetes.io/version: v0.27.0
   name: providers.notification.toolkit.fluxcd.io
 spec:
   group: notification.toolkit.fluxcd.io
@@ -3359,6 +3381,7 @@ spec:
                 - matrix
                 - opsgenie
                 - alertmanager
+                - grafana
                 type: string
               username:
                 description: Bot username for this provider
@@ -3466,7 +3489,7 @@ metadata:
   labels:
     app.kubernetes.io/instance: flux-system
     app.kubernetes.io/part-of: flux
-    app.kubernetes.io/version: v0.26.1
+    app.kubernetes.io/version: v0.27.0
   name: receivers.notification.toolkit.fluxcd.io
 spec:
   group: notification.toolkit.fluxcd.io
@@ -3535,6 +3558,15 @@ spec:
                       - ImagePolicy
                       - ImageUpdateAutomation
                       type: string
+                    matchLabels:
+                      additionalProperties:
+                        type: string
+                      description: MatchLabels is a map of {key,value} pairs. A single
+                        {key,value} in the matchLabels map is equivalent to an element
+                        of matchExpressions, whose key field is "key", the operator
+                        is "In", and the values array contains only "value". The requirements
+                        are ANDed.
+                      type: object
                     name:
                       description: Name of the referent
                       maxLength: 53
@@ -3683,7 +3715,7 @@ metadata:
   labels:
     app.kubernetes.io/instance: flux-system
     app.kubernetes.io/part-of: flux
-    app.kubernetes.io/version: v0.26.1
+    app.kubernetes.io/version: v0.27.0
   name: helm-controller
   namespace: flux-system
 ---
@@ -3693,7 +3725,7 @@ metadata:
   labels:
     app.kubernetes.io/instance: flux-system
     app.kubernetes.io/part-of: flux
-    app.kubernetes.io/version: v0.26.1
+    app.kubernetes.io/version: v0.27.0
   name: kustomize-controller
   namespace: flux-system
 ---
@@ -3703,7 +3735,7 @@ metadata:
   labels:
     app.kubernetes.io/instance: flux-system
     app.kubernetes.io/part-of: flux
-    app.kubernetes.io/version: v0.26.1
+    app.kubernetes.io/version: v0.27.0
   name: notification-controller
   namespace: flux-system
 ---
@@ -3713,7 +3745,7 @@ metadata:
   labels:
     app.kubernetes.io/instance: flux-system
     app.kubernetes.io/part-of: flux
-    app.kubernetes.io/version: v0.26.1
+    app.kubernetes.io/version: v0.27.0
   name: source-controller
   namespace: flux-system
 ---
@@ -3723,7 +3755,7 @@ metadata:
   labels:
     app.kubernetes.io/instance: flux-system
     app.kubernetes.io/part-of: flux
-    app.kubernetes.io/version: v0.26.1
+    app.kubernetes.io/version: v0.27.0
   name: crd-controller-flux-system
 rules:
 - apiGroups:
@@ -3804,7 +3836,7 @@ metadata:
   labels:
     app.kubernetes.io/instance: flux-system
     app.kubernetes.io/part-of: flux
-    app.kubernetes.io/version: v0.26.1
+    app.kubernetes.io/version: v0.27.0
   name: cluster-reconciler-flux-system
 roleRef:
   apiGroup: rbac.authorization.k8s.io
@@ -3824,7 +3856,7 @@ metadata:
   labels:
     app.kubernetes.io/instance: flux-system
     app.kubernetes.io/part-of: flux
-    app.kubernetes.io/version: v0.26.1
+    app.kubernetes.io/version: v0.27.0
   name: crd-controller-flux-system
 roleRef:
   apiGroup: rbac.authorization.k8s.io
@@ -3856,7 +3888,7 @@ metadata:
   labels:
     app.kubernetes.io/instance: flux-system
     app.kubernetes.io/part-of: flux
-    app.kubernetes.io/version: v0.26.1
+    app.kubernetes.io/version: v0.27.0
     control-plane: controller
   name: notification-controller
   namespace: flux-system
@@ -3876,7 +3908,7 @@ metadata:
   labels:
     app.kubernetes.io/instance: flux-system
     app.kubernetes.io/part-of: flux
-    app.kubernetes.io/version: v0.26.1
+    app.kubernetes.io/version: v0.27.0
     control-plane: controller
   name: source-controller
   namespace: flux-system
@@ -3896,7 +3928,7 @@ metadata:
   labels:
     app.kubernetes.io/instance: flux-system
     app.kubernetes.io/part-of: flux
-    app.kubernetes.io/version: v0.26.1
+    app.kubernetes.io/version: v0.27.0
     control-plane: controller
   name: webhook-receiver
   namespace: flux-system
@@ -3916,7 +3948,7 @@ metadata:
   labels:
     app.kubernetes.io/instance: flux-system
     app.kubernetes.io/part-of: flux
-    app.kubernetes.io/version: v0.26.1
+    app.kubernetes.io/version: v0.27.0
     control-plane: controller
   name: helm-controller
   namespace: flux-system
@@ -3945,7 +3977,7 @@ spec:
           valueFrom:
             fieldRef:
               fieldPath: metadata.namespace
-        image: ghcr.io/fluxcd/helm-controller:v0.16.0
+        image: ghcr.io/fluxcd/helm-controller:v0.17.0
         imagePullPolicy: IfNotPresent
         livenessProbe:
           httpGet:
@@ -3996,7 +4028,7 @@ metadata:
   labels:
     app.kubernetes.io/instance: flux-system
     app.kubernetes.io/part-of: flux
-    app.kubernetes.io/version: v0.26.1
+    app.kubernetes.io/version: v0.27.0
     control-plane: controller
   name: kustomize-controller
   namespace: flux-system
@@ -4025,7 +4057,7 @@ spec:
           valueFrom:
             fieldRef:
               fieldPath: metadata.namespace
-        image: ghcr.io/fluxcd/kustomize-controller:v0.20.0
+        image: ghcr.io/fluxcd/kustomize-controller:v0.21.0
         imagePullPolicy: IfNotPresent
         livenessProbe:
           httpGet:
@@ -4078,7 +4110,7 @@ metadata:
   labels:
     app.kubernetes.io/instance: flux-system
     app.kubernetes.io/part-of: flux
-    app.kubernetes.io/version: v0.26.1
+    app.kubernetes.io/version: v0.27.0
     control-plane: controller
   name: notification-controller
   namespace: flux-system
@@ -4106,7 +4138,7 @@ spec:
           valueFrom:
             fieldRef:
               fieldPath: metadata.namespace
-        image: ghcr.io/fluxcd/notification-controller:v0.21.0
+        image: ghcr.io/fluxcd/notification-controller:v0.22.0
         imagePullPolicy: IfNotPresent
         livenessProbe:
           httpGet:
@@ -4163,7 +4195,7 @@ metadata:
   labels:
     app.kubernetes.io/instance: flux-system
     app.kubernetes.io/part-of: flux
-    app.kubernetes.io/version: v0.26.1
+    app.kubernetes.io/version: v0.27.0
     control-plane: controller
   name: source-controller
   namespace: flux-system
@@ -4196,7 +4228,7 @@ spec:
           valueFrom:
             fieldRef:
               fieldPath: metadata.namespace
-        image: ghcr.io/fluxcd/source-controller:v0.21.1
+        image: ghcr.io/fluxcd/source-controller:v0.21.2
         imagePullPolicy: IfNotPresent
         livenessProbe:
           httpGet:
@@ -4256,7 +4288,7 @@ metadata:
   labels:
     app.kubernetes.io/instance: flux-system
     app.kubernetes.io/part-of: flux
-    app.kubernetes.io/version: v0.26.1
+    app.kubernetes.io/version: v0.27.0
   name: allow-egress
   namespace: flux-system
 spec:
@@ -4276,7 +4308,7 @@ metadata:
   labels:
     app.kubernetes.io/instance: flux-system
     app.kubernetes.io/part-of: flux
-    app.kubernetes.io/version: v0.26.1
+    app.kubernetes.io/version: v0.27.0
   name: allow-scraping
   namespace: flux-system
 spec:
@@ -4296,7 +4328,7 @@ metadata:
   labels:
     app.kubernetes.io/instance: flux-system
     app.kubernetes.io/part-of: flux
-    app.kubernetes.io/version: v0.26.1
+    app.kubernetes.io/version: v0.27.0
   name: allow-webhooks
   namespace: flux-system
 spec:
diff --git a/base/flux/kustomization.yaml b/base/flux/kustomization.yaml
index 74c86991970cce404f4aea5df5ff40c244ebec0d..c8135cfe26dcb2a9637631410d40ada546fa6305 100644
--- a/base/flux/kustomization.yaml
+++ b/base/flux/kustomization.yaml
@@ -6,16 +6,16 @@ resources:
 images:
 - name: ghcr.io/fluxcd/helm-controller
   newName: registry1.dso.mil/ironbank/fluxcd/helm-controller
-  newTag: v0.16.0
+  newTag: v0.17.0
 - name: ghcr.io/fluxcd/kustomize-controller
   newName: registry1.dso.mil/ironbank/fluxcd/kustomize-controller
-  newTag: v0.20.0
+  newTag: v0.21.0
 - name: ghcr.io/fluxcd/notification-controller
   newName: registry1.dso.mil/ironbank/fluxcd/notification-controller
-  newTag: v0.21.0
+  newTag: v0.22.0
 - name: ghcr.io/fluxcd/source-controller
   newName: registry1.dso.mil/ironbank/fluxcd/source-controller
-  newTag: v0.21.1
+  newTag: v0.21.2
 
 patches:
   - target: