diff --git a/internal/ingress/status/status.go b/internal/ingress/status/status.go index 7e2db9189..791e88818 100644 --- a/internal/ingress/status/status.go +++ b/internal/ingress/status/status.go @@ -226,8 +226,21 @@ func (s *statusSync) runningAddresses() ([]apiv1.LoadBalancerIngress, error) { } func (s *statusSync) isRunningMultiplePods() bool { + + // As a standard, app.kubernetes.io are "reserved well-known" labels. + // In our case, we add those labels as identifiers of the Ingress + // deployment in this namespace, so we can select it as a set of Ingress instances. + // As those labels are also generated as part of a HELM deployment, we can be "safe" they + // cover 95% of the cases + podLabel := make(map[string]string) + for k, v := range k8s.IngressPodDetails.Labels { + if k != "pod-template-hash" && k != "controller-revision-hash" && k != "pod-template-generation" { + podLabel[k] = v + } + } + pods, err := s.Client.CoreV1().Pods(k8s.IngressPodDetails.Namespace).List(context.TODO(), metav1.ListOptions{ - LabelSelector: labels.SelectorFromSet(k8s.IngressPodDetails.Labels).String(), + LabelSelector: labels.SelectorFromSet(podLabel).String(), }) if err != nil { return false