diff --git a/internal/ingress/controller/controller.go b/internal/ingress/controller/controller.go index e89e1fead..c80456dd5 100644 --- a/internal/ingress/controller/controller.go +++ b/internal/ingress/controller/controller.go @@ -337,6 +337,7 @@ func (n *NGINXController) getStreamServices(configmapName string, proto apiv1.Pr ProxyProtocol: svcProxyProtocol, }, Endpoints: endps, + Service: svc, }) } // Keep upstream order sorted to reduce unnecessary nginx config reloads. diff --git a/internal/ingress/controller/nginx.go b/internal/ingress/controller/nginx.go index 46725b5c7..b549102d3 100644 --- a/internal/ingress/controller/nginx.go +++ b/internal/ingress/controller/nginx.go @@ -816,19 +816,31 @@ func configureDynamically(pcfg *ingress.Configuration, port int, isDynamicCertif streams := make([]ingress.Backend, 0) for _, ep := range pcfg.TCPEndpoints { + var service *apiv1.Service + if ep.Service != nil { + service = &apiv1.Service{Spec: ep.Service.Spec} + } + key := fmt.Sprintf("tcp-%v-%v-%v", ep.Backend.Namespace, ep.Backend.Name, ep.Backend.Port.String()) streams = append(streams, ingress.Backend{ Name: key, Endpoints: ep.Endpoints, Port: intstr.FromInt(ep.Port), + Service: service, }) } for _, ep := range pcfg.UDPEndpoints { + var service *apiv1.Service + if ep.Service != nil { + service = &apiv1.Service{Spec: ep.Service.Spec} + } + key := fmt.Sprintf("udp-%v-%v-%v", ep.Backend.Namespace, ep.Backend.Name, ep.Backend.Port.String()) streams = append(streams, ingress.Backend{ Name: key, Endpoints: ep.Endpoints, Port: intstr.FromInt(ep.Port), + Service: service, }) } diff --git a/internal/ingress/types.go b/internal/ingress/types.go index c70a5526f..14f1dfd24 100644 --- a/internal/ingress/types.go +++ b/internal/ingress/types.go @@ -322,6 +322,8 @@ type L4Service struct { Backend L4Backend `json:"backend"` // Endpoints active endpoints of the service Endpoints []Endpoint `json:"endpoints,omitempty"` + // k8s Service + Service *apiv1.Service `json:"service,omitempty"` } // L4Backend describes the kubernetes service behind L4 Ingress service