mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-18 16:21:13 +00:00
Move eTP:Local NodePort test from loadbalancer.go to service.go
(And in particular, remove `[Feature:LoadBalancer]` from it.)
This commit is contained in:
parent
5230bab600
commit
41527afe28
@ -1014,38 +1014,6 @@ var _ = common.SIGDescribe("LoadBalancers ExternalTrafficPolicy: Local", feature
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
ginkgo.It("should work for type=NodePort", func(ctx context.Context) {
|
|
||||||
namespace := f.Namespace.Name
|
|
||||||
serviceName := "external-local-nodeport"
|
|
||||||
jig := e2eservice.NewTestJig(cs, namespace, serviceName)
|
|
||||||
|
|
||||||
svc, err := jig.CreateOnlyLocalNodePortService(ctx, true)
|
|
||||||
framework.ExpectNoError(err)
|
|
||||||
ginkgo.DeferCleanup(func(ctx context.Context) {
|
|
||||||
err := cs.CoreV1().Services(svc.Namespace).Delete(ctx, svc.Name, metav1.DeleteOptions{})
|
|
||||||
framework.ExpectNoError(err)
|
|
||||||
})
|
|
||||||
|
|
||||||
tcpNodePort := int(svc.Spec.Ports[0].NodePort)
|
|
||||||
|
|
||||||
endpointsNodeMap, err := getEndpointNodesWithInternalIP(ctx, jig)
|
|
||||||
framework.ExpectNoError(err)
|
|
||||||
|
|
||||||
dialCmd := "clientip"
|
|
||||||
config := e2enetwork.NewNetworkingTestConfig(ctx, f)
|
|
||||||
|
|
||||||
for nodeName, nodeIP := range endpointsNodeMap {
|
|
||||||
ginkgo.By(fmt.Sprintf("reading clientIP using the TCP service's NodePort, on node %v: %v:%v/%v", nodeName, nodeIP, tcpNodePort, dialCmd))
|
|
||||||
clientIP, err := GetHTTPContentFromTestContainer(ctx, config, nodeIP, tcpNodePort, e2eservice.KubeProxyLagTimeout, dialCmd)
|
|
||||||
framework.ExpectNoError(err)
|
|
||||||
framework.Logf("ClientIP detected by target pod using NodePort is %s, the ip of test container is %s", clientIP, config.TestContainerPod.Status.PodIP)
|
|
||||||
// the clientIP returned by agnhost contains port
|
|
||||||
if !strings.HasPrefix(clientIP, config.TestContainerPod.Status.PodIP) {
|
|
||||||
framework.Failf("Source IP was NOT preserved")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
ginkgo.It("should only target nodes with endpoints", func(ctx context.Context) {
|
ginkgo.It("should only target nodes with endpoints", func(ctx context.Context) {
|
||||||
namespace := f.Namespace.Name
|
namespace := f.Namespace.Name
|
||||||
serviceName := "external-local-nodes"
|
serviceName := "external-local-nodes"
|
||||||
|
@ -2692,6 +2692,38 @@ var _ = common.SIGDescribe("Services", func() {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
ginkgo.It("should support externalTrafficPolicy=Local for type=NodePort", func(ctx context.Context) {
|
||||||
|
namespace := f.Namespace.Name
|
||||||
|
serviceName := "external-local-nodeport"
|
||||||
|
jig := e2eservice.NewTestJig(cs, namespace, serviceName)
|
||||||
|
|
||||||
|
svc, err := jig.CreateOnlyLocalNodePortService(ctx, true)
|
||||||
|
framework.ExpectNoError(err)
|
||||||
|
ginkgo.DeferCleanup(func(ctx context.Context) {
|
||||||
|
err := cs.CoreV1().Services(svc.Namespace).Delete(ctx, svc.Name, metav1.DeleteOptions{})
|
||||||
|
framework.ExpectNoError(err)
|
||||||
|
})
|
||||||
|
|
||||||
|
tcpNodePort := int(svc.Spec.Ports[0].NodePort)
|
||||||
|
|
||||||
|
endpointsNodeMap, err := getEndpointNodesWithInternalIP(ctx, jig)
|
||||||
|
framework.ExpectNoError(err)
|
||||||
|
|
||||||
|
dialCmd := "clientip"
|
||||||
|
config := e2enetwork.NewNetworkingTestConfig(ctx, f)
|
||||||
|
|
||||||
|
for nodeName, nodeIP := range endpointsNodeMap {
|
||||||
|
ginkgo.By(fmt.Sprintf("reading clientIP using the TCP service's NodePort, on node %v: %v:%v/%v", nodeName, nodeIP, tcpNodePort, dialCmd))
|
||||||
|
clientIP, err := GetHTTPContentFromTestContainer(ctx, config, nodeIP, tcpNodePort, e2eservice.KubeProxyLagTimeout, dialCmd)
|
||||||
|
framework.ExpectNoError(err)
|
||||||
|
framework.Logf("ClientIP detected by target pod using NodePort is %s, the ip of test container is %s", clientIP, config.TestContainerPod.Status.PodIP)
|
||||||
|
// the clientIP returned by agnhost contains port
|
||||||
|
if !strings.HasPrefix(clientIP, config.TestContainerPod.Status.PodIP) {
|
||||||
|
framework.Failf("Source IP was NOT preserved")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
ginkgo.It("should fail health check node port if there are only terminating endpoints", func(ctx context.Context) {
|
ginkgo.It("should fail health check node port if there are only terminating endpoints", func(ctx context.Context) {
|
||||||
// windows kube-proxy does not support this feature yet
|
// windows kube-proxy does not support this feature yet
|
||||||
e2eskipper.SkipIfNodeOSDistroIs("windows")
|
e2eskipper.SkipIfNodeOSDistroIs("windows")
|
||||||
|
Loading…
Reference in New Issue
Block a user