Skip to content

Commit 71fa7ed

Browse files
committed
Add FeatureFlag CacheFluxcdObjects
1 parent 1a222b7 commit 71fa7ed

4 files changed

Lines changed: 65 additions & 0 deletions

File tree

go.mod

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,10 @@ require (
1616
github.com/chainguard-dev/git-urls v1.0.2
1717
github.com/elazarl/goproxy v1.8.1
1818
github.com/fluxcd/cli-utils v0.37.1-flux.1
19+
github.com/fluxcd/helm-controller/api v1.5.1
20+
github.com/fluxcd/image-automation-controller/api v1.1.0
21+
github.com/fluxcd/image-reflector-controller/api v1.1.0
22+
github.com/fluxcd/kustomize-controller/api v1.8.1
1923
github.com/fluxcd/notification-controller/api v1.8.0
2024
github.com/fluxcd/pkg/apis/event v0.24.0
2125
github.com/fluxcd/pkg/apis/meta v1.25.0
@@ -26,6 +30,7 @@ require (
2630
github.com/fluxcd/pkg/runtime v0.100.1
2731
github.com/fluxcd/pkg/ssa v0.67.1
2832
github.com/fluxcd/pkg/ssh v0.24.0
33+
github.com/fluxcd/source-controller/api v1.8.0
2934
github.com/getsentry/sentry-go v0.42.0
3035
github.com/go-logr/logr v1.4.3
3136
github.com/google/cel-go v0.27.0

go.sum

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,14 @@ github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2
135135
github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
136136
github.com/fluxcd/cli-utils v0.37.1-flux.1 h1:WnG2mHxCPZMj/soIq/S/1zvbrGCJN3GJGbNfG06X55M=
137137
github.com/fluxcd/cli-utils v0.37.1-flux.1/go.mod h1:aND5wX3LuTFtB7eUT7vsWr8mmxRVSPR2Wkvbn0SqPfw=
138+
github.com/fluxcd/helm-controller/api v1.5.1 h1:yraWl0ImzO4yIy/N5d9i54N+OZxKuFZqjed8wrIjy8U=
139+
github.com/fluxcd/helm-controller/api v1.5.1/go.mod h1:Yr0y7GKizbvQQGK5wBX6sGCZrTY86AN9n1PNEsji2XE=
140+
github.com/fluxcd/image-automation-controller/api v1.1.0 h1:CLPNHQskX0falo4s1suG1ztUe9IGaY9q5ntcz5Fxt9A=
141+
github.com/fluxcd/image-automation-controller/api v1.1.0/go.mod h1:dIpTDlWgUfjvdGZCNfe8Ht9sCiHwRbJDoIbwfLQ56wc=
142+
github.com/fluxcd/image-reflector-controller/api v1.1.0 h1:7TtE9DrCnlH1Wn3R3UKXJHNhX/FgS0ejdjFKHzl+XHs=
143+
github.com/fluxcd/image-reflector-controller/api v1.1.0/go.mod h1:hLGsqTv3RydJXaApmN+ZtIOHNxlUdmuOJl323x6dsPE=
144+
github.com/fluxcd/kustomize-controller/api v1.8.1 h1:Pe5+sV1i1EwfK5TA4ogYX6YJ6ADJaETmG58WYieRkG4=
145+
github.com/fluxcd/kustomize-controller/api v1.8.1/go.mod h1:+ZJB/dIGbnSzZ5J/kiJ8n0USmLNAjfeZU6Xfra0oMZA=
138146
github.com/fluxcd/pkg/apis/acl v0.9.0 h1:wBpgsKT+jcyZEcM//OmZr9RiF8klL3ebrDp2u2ThsnA=
139147
github.com/fluxcd/pkg/apis/acl v0.9.0/go.mod h1:TttNS+gocsGLwnvmgVi3/Yscwqrjc17+vhgYfqkfrV4=
140148
github.com/fluxcd/pkg/apis/event v0.24.0 h1:WVPf0FrJ5JExRDDGoo4W0jZgHZt0n4E48/e8b3TSmkA=
@@ -157,6 +165,8 @@ github.com/fluxcd/pkg/ssa v0.67.1 h1:wmwrznP+USRUtppKRjAiBx3ayriygRx0IeMdX7z/HaM
157165
github.com/fluxcd/pkg/ssa v0.67.1/go.mod h1:PFXVjChubQOiWDxalpwh6PzRsEswGqnKwZB4ScoxDx4=
158166
github.com/fluxcd/pkg/ssh v0.24.0 h1:hrPlxs0hhXf32DRqs68VbsXs0XfQMphyRVIk0rYYJa4=
159167
github.com/fluxcd/pkg/ssh v0.24.0/go.mod h1:xWammEqalrpurpcMiixJRXtynRQtBEoqheyU5F/vWrg=
168+
github.com/fluxcd/source-controller/api v1.8.0 h1:ndrYmcv6ZMcdQHFSUkOrFVDO7h16SfDBSw/DOqf/LPo=
169+
github.com/fluxcd/source-controller/api v1.8.0/go.mod h1:1O7+sMbqc1+3tPvjmtgFz+bASTl794Y9SxpebHDDSGA=
160170
github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw=
161171
github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g=
162172
github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k=

internal/features/features.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,12 @@ const (
3131
// When enabled, it will cache both object types, resulting in increased
3232
// memory usage and cluster-wide RBAC permissions (list and watch).
3333
CacheSecretsAndConfigMaps = "CacheSecretsAndConfigMaps"
34+
// CacheFluxObjects controls whether FluxCD objects referenced by Alerts
35+
// should be cached via informers.
36+
//
37+
// When enabled, it will cache all Flux objects under Alerts, resulting in
38+
// increased memory usage and additional RBAC permissions (list and watch).
39+
CacheFluxObjects = "CacheFluxObjects"
3440
)
3541

3642
var features = map[string]bool{
@@ -40,6 +46,9 @@ var features = map[string]bool{
4046
// DisableConfigWatchers
4147
// opt-in from v1.7.5
4248
controller.FeatureGateDisableConfigWatchers: false,
49+
// CacheFluxObjects
50+
// opt-in from v1.9.0
51+
CacheFluxObjects: false,
4352
}
4453

4554
func init() {

main.go

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,14 @@ import (
5050
"github.com/fluxcd/pkg/runtime/pprof"
5151
"github.com/fluxcd/pkg/runtime/probes"
5252

53+
// FluxCD controller APIs - only used when CacheFluxObjects is enabled
54+
helmv2 "github.com/fluxcd/helm-controller/api/v2"
55+
imageautov1 "github.com/fluxcd/image-automation-controller/api/v1beta2"
56+
imagev1 "github.com/fluxcd/image-reflector-controller/api/v1beta2"
57+
kustomizev1 "github.com/fluxcd/kustomize-controller/api/v1"
58+
sourcev1 "github.com/fluxcd/source-controller/api/v1"
59+
sourcev1beta2 "github.com/fluxcd/source-controller/api/v1beta2"
60+
5361
apiv1 "github.com/fluxcd/notification-controller/api/v1"
5462
apiv1b2 "github.com/fluxcd/notification-controller/api/v1beta2"
5563
apiv1b3 "github.com/fluxcd/notification-controller/api/v1beta3"
@@ -163,6 +171,19 @@ func main() {
163171
disableCacheFor = append(disableCacheFor, &corev1.Secret{}, &corev1.ConfigMap{})
164172
}
165173

174+
cacheFluxObjects, err := features.Enabled(features.CacheFluxObjects)
175+
if err != nil {
176+
setupLog.Error(err, "unable to check feature gate "+features.CacheFluxObjects)
177+
os.Exit(1)
178+
}
179+
if cacheFluxObjects {
180+
if err := registerFluxSchemes(scheme); err != nil {
181+
setupLog.Error(err, "unable to register Flux controller schemes")
182+
os.Exit(1)
183+
}
184+
setupLog.Info("FluxCD object caching enabled via informers")
185+
}
186+
166187
restConfig := client.GetConfigOrDie(clientOptions)
167188
mgrConfig := ctrl.Options{
168189
Scheme: scheme,
@@ -301,3 +322,23 @@ func main() {
301322
os.Exit(1)
302323
}
303324
}
325+
326+
// registerFluxSchemes registers FluxCD controller schemes for caching
327+
func registerFluxSchemes(scheme *runtime.Scheme) error {
328+
if err := sourcev1.AddToScheme(scheme); err != nil {
329+
return err
330+
}
331+
if err := sourcev1beta2.AddToScheme(scheme); err != nil {
332+
return err
333+
}
334+
if err := kustomizev1.AddToScheme(scheme); err != nil {
335+
return err
336+
}
337+
if err := helmv2.AddToScheme(scheme); err != nil {
338+
return err
339+
}
340+
if err := imagev1.AddToScheme(scheme); err != nil {
341+
return err
342+
}
343+
return imageautov1.AddToScheme(scheme)
344+
}

0 commit comments

Comments
 (0)