diff --git a/pkg/apiserver/apiserver.go b/pkg/apiserver/apiserver.go index fccbf9a9..bc2b4857 100644 --- a/pkg/apiserver/apiserver.go +++ b/pkg/apiserver/apiserver.go @@ -149,6 +149,17 @@ func (c completedConfig) New() (*CozyServer, error) { return nil, fmt.Errorf("failed to build manager: %w", err) } + if err := mgr.GetFieldIndexer().IndexField( + context.Background(), + &corev1.Service{}, + "spec.type", + func(rawObj client.Object) []string { + svc := rawObj.(*corev1.Service) + return []string{string(svc.Spec.Type)} + }); err != nil { + return nil, fmt.Errorf("failed to index service spec.type field: %w", err) + } + ctx := ctrl.SetupSignalHandler() if err = mustGetInformers(ctx, mgr, diff --git a/pkg/registry/apps/application/rest.go b/pkg/registry/apps/application/rest.go index a69e23db..00d22486 100644 --- a/pkg/registry/apps/application/rest.go +++ b/pkg/registry/apps/application/rest.go @@ -1278,16 +1278,18 @@ func (r *REST) countTenantExternalIPs(ctx context.Context, namespace string) (in } var services corev1.ServiceList - if err := r.c.List(ctx, &services, client.InNamespace(namespace)); err != nil { + if err := r.c.List( + ctx, + &services, + client.InNamespace(namespace), + client.MatchingFields{"spec.type": string(corev1.ServiceTypeLoadBalancer)}, + ); err != nil { return 0, err } var count int32 for i := range services.Items { svc := &services.Items[i] - if svc.Spec.Type != corev1.ServiceTypeLoadBalancer { - continue - } for _, ingress := range svc.Status.LoadBalancer.Ingress { if ingress.IP != "" { count++