@@ -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"
@@ -158,7 +160,7 @@ func (k k8s) MonitorChanges(eventChan chan k8ssync.SyncDataEvent, stop chan stru
158
160
informersSynced := & []cache.InformerSynced {}
159
161
k .runPodInformer (eventChan , stop , informersSynced )
160
162
for _ , namespace := range k .whiteListedNS {
161
- k .runInformers (eventChan , stop , namespace , informersSynced )
163
+ k .runInformers (eventChan , stop , namespace , informersSynced , osArgs )
162
164
k .runCRInformers (eventChan , stop , namespace , informersSynced , k .crs )
163
165
if gatewayAPIInstalled {
164
166
k .runInformersGwAPI (eventChan , stop , namespace , informersSynced )
@@ -213,7 +215,21 @@ func (k k8s) runCRInformers(eventChan chan k8ssync.SyncDataEvent, stop chan stru
213
215
}
214
216
}
215
217
216
- func (k k8s ) runInformers (eventChan chan k8ssync.SyncDataEvent , stop chan struct {}, namespace string , informersSynced * []cache.InformerSynced ) {
218
+ func (k k8s ) runConfigMapInformers (eventChan chan k8ssync.SyncDataEvent , stop chan struct {}, informersSynced * []cache.InformerSynced , configMap utils.NamespaceValue ) {
219
+ if configMap .Name != "" {
220
+ fieldSelector := fields .OneTermEqualSelector ("metadata.name" , configMap .Name ).String ()
221
+ factory := k8sinformers .NewSharedInformerFactoryWithOptions (k .builtInClient , k .cacheResyncPeriod , k8sinformers .WithNamespace (configMap .Namespace ),
222
+ k8sinformers .WithTweakListOptions (func (opts * metav1.ListOptions ) {
223
+ opts .FieldSelector = fieldSelector
224
+ }))
225
+
226
+ cmi := k .getConfigMapInformer (eventChan , factory )
227
+ go cmi .Run (stop )
228
+ * informersSynced = append (* informersSynced , cmi .HasSynced )
229
+ }
230
+ }
231
+
232
+ func (k k8s ) runInformers (eventChan chan k8ssync.SyncDataEvent , stop chan struct {}, namespace string , informersSynced * []cache.InformerSynced , osArgs utils.OSArgs ) {
217
233
factory := k8sinformers .NewSharedInformerFactoryWithOptions (k .builtInClient , k .cacheResyncPeriod , k8sinformers .WithNamespace (namespace ))
218
234
// Core.V1 Resources
219
235
nsi := k .getNamespaceInfomer (eventChan , factory )
@@ -222,10 +238,12 @@ func (k k8s) runInformers(eventChan chan k8ssync.SyncDataEvent, stop chan struct
222
238
go svci .Run (stop )
223
239
seci := k .getSecretInformer (eventChan , factory )
224
240
go seci .Run (stop )
225
- cmi := k .getConfigMapInformer (eventChan , factory )
226
- go cmi .Run (stop )
241
+ * informersSynced = append (* informersSynced , svci .HasSynced , nsi .HasSynced , seci .HasSynced )
227
242
228
- * informersSynced = append (* informersSynced , svci .HasSynced , nsi .HasSynced , seci .HasSynced , cmi .HasSynced )
243
+ k .runConfigMapInformers (eventChan , stop , informersSynced , osArgs .ConfigMap )
244
+ k .runConfigMapInformers (eventChan , stop , informersSynced , osArgs .ConfigMapTCPServices )
245
+ k .runConfigMapInformers (eventChan , stop , informersSynced , osArgs .ConfigMapErrorFiles )
246
+ k .runConfigMapInformers (eventChan , stop , informersSynced , osArgs .ConfigMapPatternFiles )
229
247
230
248
// Ingress and IngressClass Resources
231
249
ii , ici := k .getIngressInformers (eventChan , factory )
0 commit comments