@@ -36,6 +36,8 @@ import (
3636 k8ssync "github.com/haproxytech/kubernetes-ingress/pkg/k8s/sync"
3737 "github.com/haproxytech/kubernetes-ingress/pkg/utils"
3838 crdclientset "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
39+ "k8s.io/apimachinery/pkg/fields"
40+
3941 errGw "k8s.io/apimachinery/pkg/api/errors"
4042 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
4143 "sigs.k8s.io/controller-runtime/pkg/client"
@@ -256,6 +258,20 @@ func (k k8s) runCRInformers(eventChan chan k8ssync.SyncDataEvent, stop chan stru
256258 }
257259}
258260
261+ func (k k8s ) runConfigMapInformers (eventChan chan k8ssync.SyncDataEvent , stop chan struct {}, informersSynced * []cache.InformerSynced , configMap utils.NamespaceValue ) {
262+ if configMap .Name != "" {
263+ fieldSelector := fields .OneTermEqualSelector ("metadata.name" , configMap .Name ).String ()
264+ factory := k8sinformers .NewSharedInformerFactoryWithOptions (k .builtInClient , k .cacheResyncPeriod , k8sinformers .WithNamespace (configMap .Namespace ),
265+ k8sinformers .WithTweakListOptions (func (opts * metav1.ListOptions ) {
266+ opts .FieldSelector = fieldSelector
267+ }))
268+
269+ cmi := k .getConfigMapInformer (eventChan , factory )
270+ go cmi .Run (stop )
271+ * informersSynced = append (* informersSynced , cmi .HasSynced )
272+ }
273+ }
274+
259275func (k k8s ) runInformers (eventChan chan k8ssync.SyncDataEvent , stop chan struct {}, namespace string , informersSynced * []cache.InformerSynced , osArgs utils.OSArgs ) {
260276 factory := k8sinformers .NewSharedInformerFactoryWithOptions (k .builtInClient , k .cacheResyncPeriod , k8sinformers .WithNamespace (namespace ))
261277 // Core.V1 Resources
@@ -265,10 +281,12 @@ func (k k8s) runInformers(eventChan chan k8ssync.SyncDataEvent, stop chan struct
265281 go svci .Run (stop )
266282 seci := k .getSecretInformer (eventChan , factory )
267283 go seci .Run (stop )
268- cmi := k .getConfigMapInformer (eventChan , factory )
269- go cmi .Run (stop )
284+ * informersSynced = append (* informersSynced , svci .HasSynced , nsi .HasSynced , seci .HasSynced )
270285
271- * informersSynced = append (* informersSynced , svci .HasSynced , nsi .HasSynced , seci .HasSynced , cmi .HasSynced )
286+ k .runConfigMapInformers (eventChan , stop , informersSynced , osArgs .ConfigMap )
287+ k .runConfigMapInformers (eventChan , stop , informersSynced , osArgs .ConfigMapTCPServices )
288+ k .runConfigMapInformers (eventChan , stop , informersSynced , osArgs .ConfigMapErrorFiles )
289+ k .runConfigMapInformers (eventChan , stop , informersSynced , osArgs .ConfigMapPatternFiles )
272290
273291 // Ingress and IngressClass Resources
274292 ii , ici := k .getIngressInformers (eventChan , factory , osArgs )
0 commit comments