@@ -150,6 +150,14 @@ type VolumePopulatorConfig struct {
150
150
// CrossNamespace indicates if the populator supports data sources located in namespaces different than the PVC's namespace.
151
151
// This feature is alpha and requires the populator machinery to process gateway.networking.k8s.io/v1beta1.ReferenceGrant objects
152
152
CrossNamespace bool
153
+ // SharedInformerOptions is an array of SharedInformerOption. This can be provided when the volume populator shared informers are created,
154
+ // to allow for customization of the informer options. If unset, no additional SharedInformerOption is set when creating the shared informers.
155
+ //
156
+ // This is an advanced feature, specifically added as a parameter for memory management, and can be used by users that require greater access to the
157
+ // machinery of the volume populator library. It is the client's responsibility to ensure that if they are using functionality that limits
158
+ // resources or limits fields stored in the informer cache, they are responsible for ensuring that this is compatible with the library
159
+ // implementation they are using.
160
+ SharedInformerOptions []kubeinformers.SharedInformerOption
153
161
// StopCh is an optional channel you can provide to override the controller's default internal stop channel. In either case, sending
154
162
// an os.Interrupt or syscall.SIGTERM signal will initiate a graceful shutdown of the controller, by closing the stop channel
155
163
// (whichever one is used). If the graceful shutdown fails (a second signal is received), the controller will abruptly exit with a
@@ -273,7 +281,7 @@ func RunControllerWithConfig(vpcfg VolumePopulatorConfig) {
273
281
klog .Fatalf ("Failed to create gateway client: %v" , err )
274
282
}
275
283
276
- kubeInformerFactory := kubeinformers .NewSharedInformerFactory (kubeClient , time .Second * 30 )
284
+ kubeInformerFactory := kubeinformers .NewSharedInformerFactoryWithOptions (kubeClient , time .Second * 30 , vpcfg . SharedInformerOptions ... )
277
285
dynInformerFactory := dynamicinformer .NewDynamicSharedInformerFactory (dynClient , time .Second * 30 )
278
286
279
287
pvcInformer := kubeInformerFactory .Core ().V1 ().PersistentVolumeClaims ()
0 commit comments