Skip to content

Commit f1a6316

Browse files
giorio94sayboras
authored andcommitted
connectivity: cover echo-{same,other}-node services in ingress tests
There's been some back and forth [1,2] on which service should be the backend of the ingress, as echo-other-node allows to cover the cluster mesh case as well, but is not available on single-node clusters. Given that they provide a different coverage, and we just discovered a bug which only happens when targeting a backend on the same node of the client, let's start creating two ingresses to cover both cases. [1]: f7a8822 ("connectivity: make ingress target echo-other-node deployment") [2]: 7e7fa6a ("ingress: Update backend service for Ingress") Signed-off-by: Marco Iorio <[email protected]>
1 parent f4a8b64 commit f1a6316

File tree

1 file changed

+26
-16
lines changed

1 file changed

+26
-16
lines changed

connectivity/check/deployment.go

+26-16
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,6 @@ const (
6464
KindTestConnDisrupt = "test-conn-disrupt"
6565

6666
EchoServerHostPort = 4000
67-
68-
IngressServiceName = "ingress-service"
6967
)
7068

7169
type deploymentParameters struct {
@@ -339,10 +337,10 @@ func newLocalReadinessProbe(port int, path string) *corev1.Probe {
339337
}
340338
}
341339

342-
func newIngress() *networkingv1.Ingress {
340+
func newIngress(name, backend string) *networkingv1.Ingress {
343341
return &networkingv1.Ingress{
344342
ObjectMeta: metav1.ObjectMeta{
345-
Name: IngressServiceName,
343+
Name: name,
346344
Annotations: map[string]string{
347345
"ingress.cilium.io/loadbalancer-mode": "dedicated",
348346
"ingress.cilium.io/service-type": "NodePort",
@@ -365,7 +363,7 @@ func newIngress() *networkingv1.Ingress {
365363
}(),
366364
Backend: networkingv1.IngressBackend{
367365
Service: &networkingv1.IngressServiceBackend{
368-
Name: echoOtherNodeDeploymentName,
366+
Name: backend,
369367
Port: networkingv1.ServiceBackendPort{
370368
Number: 8080,
371369
},
@@ -381,6 +379,14 @@ func newIngress() *networkingv1.Ingress {
381379
}
382380
}
383381

382+
func (ct *ConnectivityTest) ingresses() map[string]string {
383+
ingresses := map[string]string{"same-node": echoSameNodeDeploymentName}
384+
if !ct.Params().SingleNode || ct.Params().MultiCluster != "" {
385+
ingresses["other-node"] = echoOtherNodeDeploymentName
386+
}
387+
return ingresses
388+
}
389+
384390
// deploy ensures the test Namespace, Services and Deployments are running on the cluster.
385391
func (ct *ConnectivityTest) deploy(ctx context.Context) error {
386392
var err error
@@ -908,12 +914,14 @@ func (ct *ConnectivityTest) deploy(ctx context.Context) error {
908914

909915
// Create one Ingress service for echo deployment
910916
if ct.Features[features.IngressController].Enabled {
911-
_, err = ct.clients.src.GetIngress(ctx, ct.params.TestNamespace, IngressServiceName, metav1.GetOptions{})
912-
if err != nil {
913-
ct.Logf("✨ [%s] Deploying Ingress resource...", ct.clients.src.ClusterName())
914-
_, err = ct.clients.src.CreateIngress(ctx, ct.params.TestNamespace, newIngress(), metav1.CreateOptions{})
917+
for name, backend := range ct.ingresses() {
918+
_, err = ct.clients.src.GetIngress(ctx, ct.params.TestNamespace, name, metav1.GetOptions{})
915919
if err != nil {
916-
return err
920+
ct.Logf("✨ [%s] Deploying Ingress resource...", ct.clients.src.ClusterName())
921+
_, err = ct.clients.src.CreateIngress(ctx, ct.params.TestNamespace, newIngress(name, backend), metav1.CreateOptions{})
922+
if err != nil {
923+
return err
924+
}
917925
}
918926
}
919927
}
@@ -1313,13 +1321,15 @@ func (ct *ConnectivityTest) validateDeployment(ctx context.Context) error {
13131321
}
13141322

13151323
if ct.Features[features.IngressController].Enabled {
1316-
svcName := fmt.Sprintf("cilium-ingress-%s", IngressServiceName)
1317-
svc, err := WaitForServiceRetrieval(ctx, ct, ct.client, ct.params.TestNamespace, svcName)
1318-
if err != nil {
1319-
return err
1320-
}
1324+
for name := range ct.ingresses() {
1325+
svcName := fmt.Sprintf("cilium-ingress-%s", name)
1326+
svc, err := WaitForServiceRetrieval(ctx, ct, ct.client, ct.params.TestNamespace, svcName)
1327+
if err != nil {
1328+
return err
1329+
}
13211330

1322-
ct.ingressService[svcName] = svc
1331+
ct.ingressService[svcName] = svc
1332+
}
13231333
}
13241334

13251335
if ct.params.MultiCluster == "" {

0 commit comments

Comments
 (0)