Skip to content

Commit 6b6cd10

Browse files
authored
Merge pull request #9000 from zalando-incubator/eks-ipv6-e2e
Eks ipv6 e2e
2 parents a1cfe42 + 347666b commit 6b6cd10

File tree

3 files changed

+65
-5
lines changed

3 files changed

+65
-5
lines changed

test/e2e/cluster_config.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ clusters:
5353
skipper_open_policy_agent_bucket_arn: "${SKIPPER_OPA_BUCKET_ARN}"
5454
skipper_open_policy_agent_observability_url: "${SKIPPER_OPA_OBSERVABILITY_URL}"
5555
skipper_open_policy_agent_bundles_url: "${SKIPPER_OPA_BUNDLES_URL}"
56+
eks_ip_family: "ipv6"
5657
criticality_level: 1
5758
environment: e2e
5859
id: ${CLUSTER_ID}

test/e2e/external_dns.go

Lines changed: 61 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,12 @@ import (
1919
"time"
2020

2121
v1 "k8s.io/api/core/v1"
22+
netv1 "k8s.io/api/networking/v1"
2223
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2324
"k8s.io/apimachinery/pkg/util/intstr"
2425
"k8s.io/client-go/kubernetes"
2526
"k8s.io/kubernetes/test/e2e/framework"
27+
"k8s.io/kubernetes/test/e2e/framework/ingress"
2628
e2epod "k8s.io/kubernetes/test/e2e/framework/pod"
2729
e2eservice "k8s.io/kubernetes/test/e2e/framework/service"
2830
admissionapi "k8s.io/pod-security-admission/api"
@@ -40,16 +42,18 @@ var _ = describe("External DNS creation", func() {
4042
f := framework.NewDefaultFramework("external-dns")
4143
f.NamespacePodSecurityEnforceLevel = admissionapi.LevelBaseline
4244
var (
43-
cs kubernetes.Interface
44-
jig *e2eservice.TestJig
45+
cs kubernetes.Interface
46+
jigs *e2eservice.TestJig
47+
jigi *ingress.TestJig
4548
)
4649

4750
BeforeEach(func() {
4851
cs = f.ClientSet
49-
jig = e2eservice.NewTestJig(cs, f.Namespace.Name, serviceName)
52+
jigs = e2eservice.NewTestJig(cs, f.Namespace.Name, serviceName)
53+
jigi = ingress.NewIngressTestJig(f.ClientSet)
5054
})
5155

52-
f.It("Should create DNS entry [Zalando]", f.WithSlow(), func(ctx context.Context) {
56+
f.It("Should create DNS entry via Service [Zalando]", f.WithSlow(), func(ctx context.Context) {
5357
nameprefix := serviceName + "-"
5458
ns := f.Namespace.Name
5559
labels := map[string]string{
@@ -65,7 +69,7 @@ var _ = describe("External DNS creation", func() {
6569
}()
6670

6771
hostName := fmt.Sprintf("%s-%d.%s", serviceName, time.Now().UTC().Unix(), E2EHostedZone())
68-
_, err := jig.CreateLoadBalancerService(ctx, timeout, func(svc *v1.Service) {
72+
_, err := jigs.CreateLoadBalancerService(ctx, timeout, func(svc *v1.Service) {
6973
svc.ObjectMeta = metav1.ObjectMeta{
7074
Name: serviceName,
7175
Annotations: map[string]string{
@@ -104,4 +108,56 @@ var _ = describe("External DNS creation", func() {
104108
err = waitForSuccessfulResponse(hostName, timeout)
105109
framework.ExpectNoError(err, "failed to wait for %s to be reachable", hostName)
106110
})
111+
112+
f.It("Should create DNS entry via Ingress [Zalando]", f.WithSlow(), func(ctx context.Context) {
113+
nameprefix := serviceName + "-"
114+
ns := f.Namespace.Name
115+
labels := map[string]string{
116+
"foo": "bar",
117+
"baz": "blah",
118+
}
119+
port := 80
120+
121+
By("Creating service " + serviceName + " in namespace " + ns)
122+
service := createServiceTypeClusterIP(serviceName, labels, port, port)
123+
defer func() {
124+
err := cs.CoreV1().Services(ns).Delete(ctx, serviceName, metav1.DeleteOptions{})
125+
framework.ExpectNoError(err, "failed to delete service: %s in namespace: %s", serviceName, ns)
126+
}()
127+
_, err := cs.CoreV1().Services(ns).Create(ctx, service, metav1.CreateOptions{})
128+
framework.ExpectNoError(err)
129+
130+
hostName := fmt.Sprintf("%s-%d.%s", serviceName, time.Now().UTC().Unix(), E2EHostedZone())
131+
132+
By("Creating an ingress with name " + serviceName + " in namespace " + ns + " with hostname " + hostName)
133+
ing := createIngress(serviceName, hostName, ns, "/", netv1.PathTypeImplementationSpecific, labels, nil, port)
134+
defer func() {
135+
err := cs.NetworkingV1().Ingresses(ns).Delete(ctx, ing.Name, metav1.DeleteOptions{})
136+
framework.ExpectNoError(err, "failed to delete ingress: %s in namespace: %s", serviceName, ns)
137+
}()
138+
ingressCreate, err := cs.NetworkingV1().Ingresses(ns).Create(ctx, ing, metav1.CreateOptions{})
139+
framework.ExpectNoError(err)
140+
141+
_, err = jigi.WaitForIngressAddress(ctx, cs, ns, ingressCreate.Name, 10*time.Minute)
142+
framework.ExpectNoError(err)
143+
144+
By("Submitting the pod to kubernetes")
145+
route := fmt.Sprintf(`* -> inlineContent("%s") -> <shunt>`, "OK")
146+
pod := createSkipperPod(nameprefix, ns, route, labels, port)
147+
defer func() {
148+
err := cs.CoreV1().Pods(ns).Delete(ctx, pod.Name, metav1.DeleteOptions{})
149+
framework.ExpectNoError(err, "failed to delete pod: %s in namespace: %s", pod.Name, ns)
150+
}()
151+
152+
_, err = cs.CoreV1().Pods(ns).Create(ctx, pod, metav1.CreateOptions{})
153+
framework.ExpectNoError(err, "failed to create pod: %s in namespace: %s", pod.Name, ns)
154+
155+
framework.ExpectNoError(e2epod.WaitForPodNameRunningInNamespace(ctx, f.ClientSet, pod.Name, pod.Namespace),
156+
"failed to wait for pod: %s in namespace: %s", pod.Name, ns)
157+
158+
// wait for DNS and for pod to be reachable.
159+
By("Waiting up to " + timeout.String() + " for " + hostName + " to be reachable")
160+
err = waitForSuccessfulResponse(hostName, timeout)
161+
framework.ExpectNoError(err, "failed to wait for %s to be reachable", hostName)
162+
})
107163
})

test/e2e/run_e2e.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,9 @@ if [ "$e2e" = true ]; then
205205
"Mirror pods should be created for the main Kubernetes components \[Zalando\]"
206206
"Should audit API calls to create, update, patch, delete pods. \[Audit\] \[Zalando\]"
207207
"should validate permissions for \[Authorization\] \[RBAC\] \[Zalando\]" # TODO: Remains skipped until we remove the older RBAC setup
208+
"Should NOT get AWS IAM credentials" # Disabled on IPv6 as kube2iam is not compatible in current config.
209+
"should creating a working mysql cluster" # upstream test which does not work with IPv6
210+
"Should create DNS entry via Service \[Zalando\]" # Depends on service Type LoadBalancer which doesn't work with IPv6.
208211
)
209212
fi
210213

0 commit comments

Comments
 (0)