Skip to content

Commit 0e3a247

Browse files
authored
Merge pull request kubernetes#130083 from elizabeth-dev/replace-network-e2e-replicationcontrollers-5
test(network): replace calls to e2erc.RunRC with Deployments in SIG Network tests
2 parents 0d996fe + e15fd43 commit 0e3a247

File tree

2 files changed

+92
-54
lines changed

2 files changed

+92
-54
lines changed

test/e2e/network/proxy.go

Lines changed: 82 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import (
2929
"sync"
3030
"time"
3131

32+
appsv1 "k8s.io/api/apps/v1"
3233
v1 "k8s.io/api/core/v1"
3334
apierrors "k8s.io/apimachinery/pkg/api/errors"
3435
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -38,11 +39,10 @@ import (
3839
clientset "k8s.io/client-go/kubernetes"
3940
"k8s.io/client-go/transport"
4041
"k8s.io/kubernetes/test/e2e/framework"
42+
e2edeployment "k8s.io/kubernetes/test/e2e/framework/deployment"
4143
e2enode "k8s.io/kubernetes/test/e2e/framework/node"
4244
e2epod "k8s.io/kubernetes/test/e2e/framework/pod"
43-
e2erc "k8s.io/kubernetes/test/e2e/framework/rc"
4445
"k8s.io/kubernetes/test/e2e/network/common"
45-
testutils "k8s.io/kubernetes/test/utils"
4646
imageutils "k8s.io/kubernetes/test/utils/image"
4747
admissionapi "k8s.io/pod-security-admission/api"
4848

@@ -133,52 +133,95 @@ var _ = common.SIGDescribe("Proxy", func() {
133133
}, metav1.CreateOptions{})
134134
framework.ExpectNoError(err)
135135

136-
// Make an RC with a single pod. The 'porter' image is
136+
// Make a deployment with a single pod. The 'porter' image is
137137
// a simple server which serves the values of the
138138
// environmental variables below.
139139
ginkgo.By("starting an echo server on multiple ports")
140-
pods := []*v1.Pod{}
141-
cfg := testutils.RCConfig{
142-
Client: f.ClientSet,
143-
Image: imageutils.GetE2EImage(imageutils.Agnhost),
144-
Command: []string{"/agnhost", "porter"},
145-
Name: service.Name,
146-
Namespace: f.Namespace.Name,
147-
Replicas: 1,
148-
PollInterval: time.Second,
149-
Env: map[string]string{
150-
"SERVE_PORT_80": `<a href="/rewriteme">test</a>`,
151-
"SERVE_PORT_1080": `<a href="/rewriteme">test</a>`,
152-
"SERVE_PORT_160": "foo",
153-
"SERVE_PORT_162": "bar",
154-
155-
"SERVE_TLS_PORT_443": `<a href="/tlsrewriteme">test</a>`,
156-
"SERVE_TLS_PORT_460": `tls baz`,
157-
"SERVE_TLS_PORT_462": `tls qux`,
158-
},
159-
Ports: map[string]int{
160-
"dest1": 160,
161-
"dest2": 162,
162140

163-
"tlsdest1": 460,
164-
"tlsdest2": 462,
141+
deploymentConfig := e2edeployment.NewDeployment(service.Name,
142+
1,
143+
labels,
144+
service.Name,
145+
imageutils.GetE2EImage(imageutils.Agnhost),
146+
appsv1.RecreateDeploymentStrategyType)
147+
deploymentConfig.Spec.Template.Spec.Containers[0].Command = []string{"/agnhost", "porter"}
148+
deploymentConfig.Spec.Template.Spec.Containers[0].Env = []v1.EnvVar{
149+
{
150+
Name: "SERVE_PORT_80",
151+
Value: `<a href="/rewriteme">test</a>`,
165152
},
166-
ReadinessProbe: &v1.Probe{
167-
ProbeHandler: v1.ProbeHandler{
168-
HTTPGet: &v1.HTTPGetAction{
169-
Port: intstr.FromInt32(80),
170-
},
153+
{
154+
Name: "SERVE_PORT_1080",
155+
Value: `<a href="/rewriteme">test</a>`,
156+
},
157+
{
158+
Name: "SERVE_PORT_160",
159+
Value: "foo",
160+
},
161+
{
162+
Name: "SERVE_PORT_162",
163+
Value: "bar",
164+
},
165+
{
166+
Name: "SERVE_TLS_PORT_443",
167+
Value: `<a href="/tlsrewriteme">test</a>`,
168+
},
169+
{
170+
Name: "SERVE_TLS_PORT_460",
171+
Value: "tls baz",
172+
},
173+
{
174+
Name: "SERVE_TLS_PORT_462",
175+
Value: "tls qux",
176+
},
177+
}
178+
deploymentConfig.Spec.Template.Spec.Containers[0].Ports = []v1.ContainerPort{
179+
{
180+
ContainerPort: 80,
181+
},
182+
{
183+
Name: "dest1",
184+
ContainerPort: 160,
185+
},
186+
{
187+
Name: "dest2",
188+
ContainerPort: 162,
189+
},
190+
{
191+
Name: "tlsdest1",
192+
ContainerPort: 460,
193+
},
194+
{
195+
Name: "tlsdest2",
196+
ContainerPort: 462,
197+
},
198+
}
199+
deploymentConfig.Spec.Template.Spec.Containers[0].ReadinessProbe = &v1.Probe{
200+
ProbeHandler: v1.ProbeHandler{
201+
HTTPGet: &v1.HTTPGetAction{
202+
Port: intstr.FromInt32(80),
171203
},
172-
InitialDelaySeconds: 1,
173-
TimeoutSeconds: 5,
174-
PeriodSeconds: 10,
175204
},
176-
Labels: labels,
177-
CreatedPods: &pods,
205+
InitialDelaySeconds: 1,
206+
TimeoutSeconds: 5,
207+
PeriodSeconds: 10,
178208
}
179-
err = e2erc.RunRC(ctx, cfg)
209+
210+
deployment, err := f.ClientSet.AppsV1().Deployments(f.Namespace.Name).Create(ctx,
211+
deploymentConfig,
212+
metav1.CreateOptions{})
213+
framework.ExpectNoError(err)
214+
215+
ginkgo.DeferCleanup(func(ctx context.Context, name string) error {
216+
return f.ClientSet.AppsV1().Deployments(f.Namespace.Name).Delete(ctx, name, metav1.DeleteOptions{})
217+
}, deployment.Name)
218+
219+
err = e2edeployment.WaitForDeploymentComplete(f.ClientSet, deployment)
220+
framework.ExpectNoError(err)
221+
222+
podList, err := e2edeployment.GetPodsForDeployment(ctx, f.ClientSet, deployment)
180223
framework.ExpectNoError(err)
181-
ginkgo.DeferCleanup(e2erc.DeleteRCAndWaitForGC, f.ClientSet, f.Namespace.Name, cfg.Name)
224+
pods := podList.Items
182225

183226
err = waitForEndpoint(ctx, f.ClientSet, f.Namespace.Name, service.Name)
184227
framework.ExpectNoError(err)

test/e2e/network/service_latency.go

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import (
2323
"strings"
2424
"time"
2525

26+
appsv1 "k8s.io/api/apps/v1"
2627
v1 "k8s.io/api/core/v1"
2728
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2829
"k8s.io/apimachinery/pkg/runtime"
@@ -32,9 +33,8 @@ import (
3233
"k8s.io/client-go/tools/cache"
3334
"k8s.io/client-go/util/flowcontrol"
3435
"k8s.io/kubernetes/test/e2e/framework"
35-
e2erc "k8s.io/kubernetes/test/e2e/framework/rc"
36+
e2edeployment "k8s.io/kubernetes/test/e2e/framework/deployment"
3637
"k8s.io/kubernetes/test/e2e/network/common"
37-
testutils "k8s.io/kubernetes/test/utils"
3838
imageutils "k8s.io/kubernetes/test/utils/image"
3939
admissionapi "k8s.io/pod-security-admission/api"
4040

@@ -135,18 +135,13 @@ var _ = common.SIGDescribe("Service endpoints latency", func() {
135135
})
136136

137137
func runServiceLatencies(ctx context.Context, f *framework.Framework, inParallel, total int, acceptableFailureRatio float32) (output []time.Duration, err error) {
138-
cfg := testutils.RCConfig{
139-
Client: f.ClientSet,
140-
Image: imageutils.GetPauseImageName(),
141-
Name: "svc-latency-rc",
142-
Namespace: f.Namespace.Name,
143-
Replicas: 1,
144-
PollInterval: time.Second,
145-
}
146-
if err := e2erc.RunRC(ctx, cfg); err != nil {
147-
return nil, err
148-
}
138+
name := "svc-latency-rc"
139+
deploymentConf := e2edeployment.NewDeployment(name, 1, map[string]string{"name": name}, name, imageutils.GetPauseImageName(), appsv1.RecreateDeploymentStrategyType)
140+
deployment, err := f.ClientSet.AppsV1().Deployments(f.Namespace.Name).Create(ctx, deploymentConf, metav1.CreateOptions{})
141+
framework.ExpectNoError(err)
149142

143+
err = e2edeployment.WaitForDeploymentComplete(f.ClientSet, deployment)
144+
framework.ExpectNoError(err)
150145
// Run a single watcher, to reduce the number of API calls we have to
151146
// make; this is to minimize the timing error. It's how kube-proxy
152147
// consumes the endpoints data, so it seems like the right thing to
@@ -157,7 +152,7 @@ func runServiceLatencies(ctx context.Context, f *framework.Framework, inParallel
157152

158153
// run one test and throw it away-- this is to make sure that the pod's
159154
// ready status has propagated.
160-
_, err = singleServiceLatency(ctx, f, cfg.Name, endpointQueries)
155+
_, err = singleServiceLatency(ctx, f, name, endpointQueries)
161156
framework.ExpectNoError(err)
162157

163158
// These channels are never closed, and each attempt sends on exactly
@@ -172,7 +167,7 @@ func runServiceLatencies(ctx context.Context, f *framework.Framework, inParallel
172167
defer ginkgo.GinkgoRecover()
173168
blocker <- struct{}{}
174169
defer func() { <-blocker }()
175-
if d, err := singleServiceLatency(ctx, f, cfg.Name, endpointQueries); err != nil {
170+
if d, err := singleServiceLatency(ctx, f, name, endpointQueries); err != nil {
176171
errs <- err
177172
} else {
178173
durations <- d

0 commit comments

Comments
 (0)