diff --git a/internal/k8s/controller.go b/internal/k8s/controller.go index 58ad41d198..60d42ef224 100644 --- a/internal/k8s/controller.go +++ b/internal/k8s/controller.go @@ -2242,7 +2242,7 @@ func (lbc *LoadBalancerController) createIngressEx(ing *networking.Ingress, vali var external bool svc, err := lbc.getServiceForIngressBackend(ing.Spec.DefaultBackend, ing.Namespace) if err != nil { - nl.Warnf(lbc.Logger, "Error getting service %v: %v", ing.Spec.DefaultBackend.Service.Name, err) + nl.Warnf(lbc.Logger, "Error getting service %v/%v: %v", ing.Namespace, ing.Spec.DefaultBackend.Service.Name, err) } else { podEndps, external, err = lbc.getEndpointsForIngressBackend(ing.Spec.DefaultBackend, svc) if err == nil && external && lbc.isNginxPlus { @@ -2251,7 +2251,7 @@ func (lbc *LoadBalancerController) createIngressEx(ing *networking.Ingress, vali } if err != nil { - nl.Warnf(lbc.Logger, "Error retrieving endpoints for the service %v: %v", ing.Spec.DefaultBackend.Service.Name, err) + nl.Warnf(lbc.Logger, "Error retrieving endpoints for the service %v/%v: %v", ing.Namespace, ing.Spec.DefaultBackend.Service.Name, err) } if svc != nil && !external && hasUseClusterIP { @@ -2310,7 +2310,7 @@ func (lbc *LoadBalancerController) createIngressEx(ing *networking.Ingress, vali var external bool svc, err := lbc.getServiceForIngressBackend(&path.Backend, ing.Namespace) if err != nil { - nl.Debugf(lbc.Logger, "Error getting service %v: %v", &path.Backend.Service.Name, err) + nl.Debugf(lbc.Logger, "Error getting service %v/%v: %v", ing.Namespace, path.Backend.Service.Name, err) } else { podEndps, external, err = lbc.getEndpointsForIngressBackend(&path.Backend, svc) if err == nil && external && lbc.isNginxPlus { @@ -2319,7 +2319,7 @@ func (lbc *LoadBalancerController) createIngressEx(ing *networking.Ingress, vali } if err != nil { - nl.Warnf(lbc.Logger, "Error retrieving endpoints for the service %v: %v", path.Backend.Service.Name, err) + nl.Warnf(lbc.Logger, "Error retrieving endpoints for the service %v/%v: %v", ing.Namespace, path.Backend.Service.Name, err) } if svc != nil && !external && hasUseClusterIP { @@ -2474,7 +2474,7 @@ func (lbc *LoadBalancerController) createVirtualServerEx(virtualServer *conf_v1. if u.UseClusterIP { s, err := lbc.getServiceForUpstream(serviceNamespace, serviceName, u.Port) if err != nil { - nl.Warnf(lbc.Logger, "Error getting Service for Upstream %v: %v", u.Service, err) + nl.Warnf(lbc.Logger, "Error getting Service for Upstream %v/%v: %v", serviceNamespace, u.Service, err) } else { endps = append(endps, ipv6SafeAddrPort(s.Spec.ClusterIP, int32(u.Port))) } @@ -2622,7 +2622,7 @@ func (lbc *LoadBalancerController) createVirtualServerEx(virtualServer *conf_v1. if u.UseClusterIP { s, err := lbc.getServiceForUpstream(serviceNamespace, serviceName, u.Port) if err != nil { - nl.Warnf(lbc.Logger, "Error getting Service for Upstream %v: %v", u.Service, err) + nl.Warnf(lbc.Logger, "Error getting Service for Upstream %v/%v: %v", serviceNamespace, serviceName, err) } else { endps = append(endps, fmt.Sprintf("%s:%d", s.Spec.ClusterIP, u.Port)) } @@ -2949,7 +2949,7 @@ func (lbc *LoadBalancerController) getTransportServerBackupEndpointsAndKey(trans func (lbc *LoadBalancerController) getEndpointsForUpstream(namespace string, upstreamService string, upstreamPort uint16) (endps []podEndpoint, isExternal bool, err error) { svc, err := lbc.getServiceForUpstream(namespace, upstreamService, upstreamPort) if err != nil { - return nil, false, fmt.Errorf("error getting service %v: %w", upstreamService, err) + return nil, false, fmt.Errorf("error getting service %v/%v: %w", namespace, upstreamService, err) } backend := &networking.IngressBackend{ @@ -2963,7 +2963,7 @@ func (lbc *LoadBalancerController) getEndpointsForUpstream(namespace string, ups endps, isExternal, err = lbc.getEndpointsForIngressBackend(backend, svc) if err != nil { - return nil, false, fmt.Errorf("error retrieving endpoints for the service %v: %w", upstreamService, err) + return nil, false, fmt.Errorf("error retrieving endpoints for the service %v/%v: %w", namespace, upstreamService, err) } return endps, isExternal, err @@ -2972,7 +2972,7 @@ func (lbc *LoadBalancerController) getEndpointsForUpstream(namespace string, ups func (lbc *LoadBalancerController) getEndpointsForSubselector(namespace string, serviceName string, servicePort uint16, subselector map[string]string) (endps []podEndpoint, err error) { svc, err := lbc.getServiceForUpstream(namespace, serviceName, servicePort) if err != nil { - return nil, fmt.Errorf("error getting service %v: %w", serviceName, err) + return nil, fmt.Errorf("error getting service %v/%v: %w", namespace, serviceName, err) } var targetPort int32 @@ -2981,19 +2981,19 @@ func (lbc *LoadBalancerController) getEndpointsForSubselector(namespace string, if port.Port == int32(servicePort) { targetPort, err = lbc.getTargetPort(port, svc) if err != nil { - return nil, fmt.Errorf("error determining target port for port %v in service %v: %w", servicePort, svc.Name, err) + return nil, fmt.Errorf("error determining target port for port %v in service %v/%v: %w", servicePort, svc.Namespace, svc.Name, err) } break } } if targetPort == 0 { - return nil, fmt.Errorf("no port %v in service %s", servicePort, svc.Name) + return nil, fmt.Errorf("no port %v in service %s/%s", servicePort, svc.Namespace, svc.Name) } endps, err = lbc.getEndpointsForServiceWithSubselector(targetPort, subselector, svc) if err != nil { - return nil, fmt.Errorf("error retrieving endpoints for the service %v: %w", serviceName, err) + return nil, fmt.Errorf("error retrieving endpoints for the service %v/%v: %w", namespace, serviceName, err) } return endps, err @@ -3010,7 +3010,7 @@ func (lbc *LoadBalancerController) getEndpointsForServiceWithSubselector(targetP var svcEndpointSlices []discovery_v1.EndpointSlice svcEndpointSlices, err = nsi.endpointSliceLister.GetServiceEndpointSlices(svc) if err != nil { - nl.Debugf(lbc.Logger, "Error getting endpointslices for service %s from the cache: %v", svc.Name, err) + nl.Debugf(lbc.Logger, "Error getting endpointslices for service %s/%s from the cache: %v", svc.Namespace, svc.Name, err) return nil, err } @@ -3094,7 +3094,7 @@ func getPodName(pod *api_v1.ObjectReference) string { func (lbc *LoadBalancerController) getHealthChecksForIngressBackend(backend *networking.IngressBackend, namespace string) *api_v1.Probe { svc, err := lbc.getServiceForIngressBackend(backend, namespace) if err != nil { - nl.Debugf(lbc.Logger, "Error getting service %v: %v", backend.Service.Name, err) + nl.Debugf(lbc.Logger, "Error getting service %v/%v: %v", namespace, backend.Service.Name, err) return nil } svcPort := lbc.getServicePortForIngressPort(backend.Service.Port, svc) @@ -3164,13 +3164,13 @@ func (lbc *LoadBalancerController) getEndpointsForIngressBackend(backend *networ result = lbc.getExternalEndpointsForIngressBackend(backend, svc) return result, true, nil } - nl.Debugf(lbc.Logger, "Error getting endpoints for service %s from the cache: %v", svc.Name, err) + nl.Debugf(lbc.Logger, "Error getting endpoints for service %s/%s from the cache: %v", svc.Namespace, svc.Name, err) return nil, false, err } result, err = lbc.getEndpointsForPortFromEndpointSlices(endpointSlices, backend.Service.Port, svc) if err != nil { - nl.Debugf(lbc.Logger, "Error getting endpointslices for service %s port %v: %v", svc.Name, configs.GetBackendPortAsString(backend.Service.Port), err) + nl.Debugf(lbc.Logger, "Error getting endpointslices for service %s/%s port %v: %v", svc.Namespace, svc.Name, configs.GetBackendPortAsString(backend.Service.Port), err) return nil, false, err } return result, false, nil @@ -3191,7 +3191,7 @@ func (lbc *LoadBalancerController) getEndpointsForPortFromEndpointSlices(endpoin } if targetPort == 0 { - return nil, fmt.Errorf("no port %v in service %s", backendPort, svc.Name) + return nil, fmt.Errorf("no port %v in service %s/%s", backendPort, svc.Namespace, svc.Name) } makePodEndpoints := func(port int32, epx []discovery_v1.Endpoint) []podEndpoint { @@ -3217,7 +3217,7 @@ func (lbc *LoadBalancerController) getEndpointsForPortFromEndpointSlices(endpoin endpoints := makePodEndpoints(targetPort, filterReadyEndpointsFrom(selectEndpointSlicesForPort(targetPort, endpointSlices))) if len(endpoints) == 0 { - return nil, fmt.Errorf("no endpointslices for target port %v in service %s", targetPort, svc.Name) + return nil, fmt.Errorf("no endpointslices for target port %v in service %s/%s", targetPort, svc.Namespace, svc.Name) } return endpoints, nil } @@ -3281,7 +3281,7 @@ func (lbc *LoadBalancerController) getTargetPort(svcPort api_v1.ServicePort, svc } if len(pods) == 0 { - return 0, fmt.Errorf("no pods of service %s", svc.Name) + return 0, fmt.Errorf("no pods of service %s/%s", svc.Namespace, svc.Name) } pod := pods[0] diff --git a/tests/suite/test_virtual_server_foreign_upstream.py b/tests/suite/test_virtual_server_foreign_upstream.py index 11ac55eca9..503a431b03 100644 --- a/tests/suite/test_virtual_server_foreign_upstream.py +++ b/tests/suite/test_virtual_server_foreign_upstream.py @@ -7,6 +7,7 @@ create_namespace_with_name_from_yaml, delete_items_from_yaml, delete_namespace, + get_first_pod_name, wait_before_test, wait_until_all_pods_are_ready, ) @@ -15,6 +16,7 @@ create_virtual_server_from_yaml, delete_v_s_route, delete_virtual_server, + get_vs_nginx_template_conf, patch_virtual_server_from_yaml, ) from suite.utils.yaml_utils import ( @@ -44,11 +46,7 @@ def virtual_server_foreign_upstream_app_setup( :param test_namespace: :return: VirtualServerSetup """ - print("------------------------- Deploy Virtual Server Example -----------------------------------") vs_source = f"{TEST_DATA}/{request.param['example']}/standard/virtual-server.yaml" - vs_name = create_virtual_server_from_yaml(kube_apis.custom_objects, vs_source, test_namespace) - vs_host = get_first_host_from_yaml(vs_source) - vs_paths = get_paths_from_vs_yaml(vs_source) upstream_namespaces = get_upstream_namespace_from_vs_yaml(vs_source, test_namespace) print(f"Upstream namespaces detected in the VS yaml: {upstream_namespaces}") ns_1 = ( @@ -61,12 +59,17 @@ def virtual_server_foreign_upstream_app_setup( if upstream_namespaces[1] != test_namespace else test_namespace ) + print("------------------------- Deploy Virtual Server Example -----------------------------------") create_items_from_yaml(kube_apis, f"{TEST_DATA}/common/app/{request.param['app_type']}/backend1.yaml", ns_1) create_items_from_yaml(kube_apis, f"{TEST_DATA}/common/app/{request.param['app_type']}/backend2.yaml", ns_2) wait_until_all_pods_are_ready(kube_apis.v1, ns_1) wait_until_all_pods_are_ready(kube_apis.v1, ns_2) + vs_name = create_virtual_server_from_yaml(kube_apis.custom_objects, vs_source, test_namespace) + vs_host = get_first_host_from_yaml(vs_source) + vs_paths = get_paths_from_vs_yaml(vs_source) + def fin(): if request.config.getoption("--skip-fixture-teardown") == "no": print("Clean up Virtual Server Example:") @@ -106,8 +109,23 @@ def fin(): indirect=True, ) class TestVirtualServerForeignUpstream: - def test_responses_after_setup(self, kube_apis, crd_ingress_controller, virtual_server_foreign_upstream_app_setup): + def test_responses_after_setup( + self, + kube_apis, + ingress_controller_prerequisites, + crd_ingress_controller, + virtual_server_foreign_upstream_app_setup, + ): print(f"\nStep 1: initial check") + ic_pod_name = get_first_pod_name(kube_apis.v1, ingress_controller_prerequisites.namespace) + # log VS conf + get_vs_nginx_template_conf( + kube_apis.v1, + virtual_server_foreign_upstream_app_setup.namespace, + virtual_server_foreign_upstream_app_setup.vs_name, + ic_pod_name, + ingress_controller_prerequisites.namespace, + ) wait_before_test() wait_and_assert_status_code( 200,