Skip to content

Commit 03c992b

Browse files
committed
fix: only add selector when Gateway is in dataplane namespace
Kubernetes Service selectors only match pods within the same namespace. For cross-namespace Gateways (e.g. gateway-conformance-infra), adding a selector pointing to pods in nantian-gw namespace is incorrect and breaks conformance tests. Only add the selector when gateway.Namespace == defaultDataplaneNamespace.
1 parent d7b053f commit 03c992b

4 files changed

Lines changed: 19 additions & 14 deletions

File tree

internal/infrastructure/reconciler_core_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -156,8 +156,8 @@ func TestReconcileCreatesGatewayInfrastructureServiceAndUpdatesSharedPorts(t *te
156156
if gatewayService.Annotations["example.com/trace"] != "enabled" {
157157
t.Fatalf("expected propagated annotation, got %#v", gatewayService.Annotations)
158158
}
159-
if gatewayService.Spec.Selector == nil || gatewayService.Spec.Selector["app"] != "nantian-gw-dataplane" {
160-
t.Fatalf("gateway service selector = %#v, want map[app:nantian-gw-dataplane]", gatewayService.Spec.Selector)
159+
if gatewayService.Spec.Selector != nil {
160+
t.Fatalf("gateway service selector = %#v, want nil with managed EndpointSlices", gatewayService.Spec.Selector)
161161
}
162162
assertServicePort(t, gatewayService.Spec.Ports, 8080, corev1.ProtocolTCP, 0)
163163
assertServicePort(t, gatewayService.Spec.Ports, 5300, corev1.ProtocolUDP, 0)

internal/infrastructure/reconciler_mesh_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -982,8 +982,8 @@ func TestReconcileFrontsSharedAndGatewayServicesOnlyWithAckedCurrentSnapshotNode
982982
if err != nil {
983983
t.Fatalf("Get gateway Service returned error: %v", err)
984984
}
985-
if gatewayService.Spec.Selector == nil || gatewayService.Spec.Selector["app"] != "nantian-gw-dataplane" {
986-
t.Fatalf("gateway service selector = %#v, want map[app:nantian-gw-dataplane]", gatewayService.Spec.Selector)
985+
if gatewayService.Spec.Selector != nil {
986+
t.Fatalf("gateway service selector = %#v, want nil with managed EndpointSlices", gatewayService.Spec.Selector)
987987
}
988988

989989
var sharedSlices discoveryv1.EndpointSliceList

internal/infrastructure/reconciler_parameters_test.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -314,8 +314,8 @@ allocateLoadBalancerNodePorts: false
314314
if service.Spec.Type != corev1.ServiceTypeLoadBalancer {
315315
t.Fatalf("service type = %s, want LoadBalancer", service.Spec.Type)
316316
}
317-
if service.Spec.Selector == nil || service.Spec.Selector["app"] != "nantian-gw-dataplane" {
318-
t.Fatalf("gateway service selector = %#v, want map[app:nantian-gw-dataplane]", service.Spec.Selector)
317+
if service.Spec.Selector != nil {
318+
t.Fatalf("gateway service selector = %#v, want nil with managed EndpointSlices", service.Spec.Selector)
319319
}
320320
if service.Spec.ExternalTrafficPolicy != corev1.ServiceExternalTrafficPolicyLocal {
321321
t.Fatalf("externalTrafficPolicy = %s, want Local", service.Spec.ExternalTrafficPolicy)
@@ -574,8 +574,8 @@ func TestReconcileIgnoresInvalidGatewayInfrastructureParametersRef(t *testing.T)
574574
if service.Spec.Type != corev1.ServiceTypeClusterIP {
575575
t.Fatalf("service type = %s, want ClusterIP fallback", service.Spec.Type)
576576
}
577-
if service.Spec.Selector == nil || service.Spec.Selector["app"] != "nantian-gw-dataplane" {
578-
t.Fatalf("gateway service selector = %#v, want map[app:nantian-gw-dataplane]", service.Spec.Selector)
577+
if service.Spec.Selector != nil {
578+
t.Fatalf("gateway service selector = %#v, want nil with managed EndpointSlices", service.Spec.Selector)
579579
}
580580
if service.Spec.ExternalTrafficPolicy != "" {
581581
t.Fatalf("externalTrafficPolicy = %q, want empty", service.Spec.ExternalTrafficPolicy)
@@ -687,8 +687,8 @@ allocateLoadBalancerNodePorts: false
687687
if service.Spec.Type != corev1.ServiceTypeLoadBalancer {
688688
t.Fatalf("service type = %s, want LoadBalancer", service.Spec.Type)
689689
}
690-
if service.Spec.Selector == nil || service.Spec.Selector["app"] != "nantian-gw-dataplane" {
691-
t.Fatalf("gateway service selector = %#v, want map[app:nantian-gw-dataplane]", service.Spec.Selector)
690+
if service.Spec.Selector != nil {
691+
t.Fatalf("gateway service selector = %#v, want nil with managed EndpointSlices", service.Spec.Selector)
692692
}
693693
if service.Spec.ExternalTrafficPolicy != corev1.ServiceExternalTrafficPolicyLocal {
694694
t.Fatalf("externalTrafficPolicy = %s, want Local", service.Spec.ExternalTrafficPolicy)
@@ -783,8 +783,8 @@ func TestReconcileResetsGatewayServiceFieldsWhenParametersRefRemoved(t *testing.
783783
if service.Spec.Type != corev1.ServiceTypeClusterIP {
784784
t.Fatalf("service type = %s, want ClusterIP", service.Spec.Type)
785785
}
786-
if service.Spec.Selector == nil || service.Spec.Selector["app"] != "nantian-gw-dataplane" {
787-
t.Fatalf("gateway service selector = %#v, want map[app:nantian-gw-dataplane]", service.Spec.Selector)
786+
if service.Spec.Selector != nil {
787+
t.Fatalf("gateway service selector = %#v, want nil with managed EndpointSlices", service.Spec.Selector)
788788
}
789789
if service.Spec.ExternalTrafficPolicy != "" {
790790
t.Fatalf("externalTrafficPolicy = %q, want empty", service.Spec.ExternalTrafficPolicy)

internal/infrastructure/services.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,11 +98,16 @@ func desiredGatewayService(
9898
OwnerReferences: desiredGatewayServiceOwnerReferences(gateway),
9999
},
100100
Spec: corev1.ServiceSpec{
101-
Type: corev1.ServiceTypeClusterIP,
102-
Selector: map[string]string{"app": "nantian-gw-dataplane"},
101+
Type: corev1.ServiceTypeClusterIP,
103102
},
104103
}
105104

105+
// Add Selector only when the Gateway is in the same namespace as dataplane pods;
106+
// cross-namespace gateways rely on managed EndpointSlices.
107+
if gateway.Namespace == defaultDataplaneNamespace {
108+
desired.Spec.Selector = map[string]string{"app": "nantian-gw-dataplane"}
109+
}
110+
106111
if current.Name != "" {
107112
desired.ResourceVersion = current.ResourceVersion
108113
desired.UID = current.UID

0 commit comments

Comments
 (0)