@@ -33,6 +33,8 @@ import (
33
33
k8ssync "github.com/haproxytech/kubernetes-ingress/pkg/k8s/sync"
34
34
"github.com/haproxytech/kubernetes-ingress/pkg/utils"
35
35
crdclientset "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
36
+ "k8s.io/apimachinery/pkg/fields"
37
+
36
38
errGw "k8s.io/apimachinery/pkg/api/errors"
37
39
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
38
40
"sigs.k8s.io/controller-runtime/pkg/client"
@@ -155,7 +157,7 @@ func (k k8s) MonitorChanges(eventChan chan k8ssync.SyncDataEvent, stop chan stru
155
157
informersSynced := & []cache.InformerSynced {}
156
158
k .runPodInformer (eventChan , stop , informersSynced )
157
159
for _ , namespace := range k .whiteListedNS {
158
- k .runInformers (eventChan , stop , namespace , informersSynced )
160
+ k .runInformers (eventChan , stop , namespace , informersSynced , osArgs )
159
161
k .runCRInformers (eventChan , stop , namespace , informersSynced , k .crs )
160
162
if gatewayAPIInstalled {
161
163
k .runInformersGwAPI (eventChan , stop , namespace , informersSynced )
@@ -206,7 +208,21 @@ func (k k8s) runCRInformers(eventChan chan k8ssync.SyncDataEvent, stop chan stru
206
208
}
207
209
}
208
210
209
- func (k k8s ) runInformers (eventChan chan k8ssync.SyncDataEvent , stop chan struct {}, namespace string , informersSynced * []cache.InformerSynced ) {
211
+ func (k k8s ) runConfigMapInformers (eventChan chan k8ssync.SyncDataEvent , stop chan struct {}, informersSynced * []cache.InformerSynced , configMap utils.NamespaceValue ) {
212
+ if configMap .Name != "" {
213
+ fieldSelector := fields .OneTermEqualSelector ("metadata.name" , configMap .Name ).String ()
214
+ factory := k8sinformers .NewSharedInformerFactoryWithOptions (k .builtInClient , k .cacheResyncPeriod , k8sinformers .WithNamespace (configMap .Namespace ),
215
+ k8sinformers .WithTweakListOptions (func (opts * metav1.ListOptions ) {
216
+ opts .FieldSelector = fieldSelector
217
+ }))
218
+
219
+ cmi := k .getConfigMapInformer (eventChan , factory )
220
+ go cmi .Run (stop )
221
+ * informersSynced = append (* informersSynced , cmi .HasSynced )
222
+ }
223
+ }
224
+
225
+ func (k k8s ) runInformers (eventChan chan k8ssync.SyncDataEvent , stop chan struct {}, namespace string , informersSynced * []cache.InformerSynced , osArgs utils.OSArgs ) {
210
226
factory := k8sinformers .NewSharedInformerFactoryWithOptions (k .builtInClient , k .cacheResyncPeriod , k8sinformers .WithNamespace (namespace ))
211
227
// Core.V1 Resources
212
228
nsi := k .getNamespaceInfomer (eventChan , factory )
@@ -215,10 +231,12 @@ func (k k8s) runInformers(eventChan chan k8ssync.SyncDataEvent, stop chan struct
215
231
go svci .Run (stop )
216
232
seci := k .getSecretInformer (eventChan , factory )
217
233
go seci .Run (stop )
218
- cmi := k .getConfigMapInformer (eventChan , factory )
219
- go cmi .Run (stop )
234
+ * informersSynced = append (* informersSynced , svci .HasSynced , nsi .HasSynced , seci .HasSynced )
220
235
221
- * informersSynced = append (* informersSynced , svci .HasSynced , nsi .HasSynced , seci .HasSynced , cmi .HasSynced )
236
+ k .runConfigMapInformers (eventChan , stop , informersSynced , osArgs .ConfigMap )
237
+ k .runConfigMapInformers (eventChan , stop , informersSynced , osArgs .ConfigMapTCPServices )
238
+ k .runConfigMapInformers (eventChan , stop , informersSynced , osArgs .ConfigMapErrorFiles )
239
+ k .runConfigMapInformers (eventChan , stop , informersSynced , osArgs .ConfigMapPatternFiles )
222
240
223
241
// Ingress and IngressClass Resources
224
242
ii , ici := k .getIngressInformers (eventChan , factory )
0 commit comments