|
|
|
@@ -32,6 +32,10 @@ import (
|
|
|
|
|
"k8s.io/kubernetes/test/e2e/framework"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// Dependent on "static-ip-2" manifests
|
|
|
|
|
const path = "foo"
|
|
|
|
|
const host = "ingress.test.com"
|
|
|
|
|
|
|
|
|
|
// IngressUpgradeTest adapts the Ingress e2e for upgrade testing
|
|
|
|
|
type IngressUpgradeTest struct {
|
|
|
|
|
gceController *framework.GCEIngressController
|
|
|
|
@@ -93,10 +97,10 @@ func (t *IngressUpgradeTest) Setup(f *framework.Framework) {
|
|
|
|
|
"kubernetes.io/ingress.global-static-ip-name": t.ipName,
|
|
|
|
|
"kubernetes.io/ingress.allow-http": "false",
|
|
|
|
|
}, map[string]string{})
|
|
|
|
|
jig.AddHTTPS("tls-secret", "ingress.test.com")
|
|
|
|
|
t.jig.AddHTTPS("tls-secret", "ingress.test.com")
|
|
|
|
|
|
|
|
|
|
By("waiting for Ingress to come up with ip: " + t.ip)
|
|
|
|
|
framework.ExpectNoError(framework.PollURL(fmt.Sprintf("https://%v/", t.ip), "", framework.LoadBalancerPollTimeout, jig.PollInterval, t.httpClient, false))
|
|
|
|
|
framework.ExpectNoError(framework.PollURL(fmt.Sprintf("https://%v/%v", t.ip, path), host, framework.LoadBalancerPollTimeout, t.jig.PollInterval, t.httpClient, false))
|
|
|
|
|
|
|
|
|
|
By("keeping track of GCP resources created by Ingress")
|
|
|
|
|
t.resourceStore = &GCPResourceStore{}
|
|
|
|
@@ -145,35 +149,25 @@ func (t *IngressUpgradeTest) verify(f *framework.Framework, done <-chan struct{}
|
|
|
|
|
if testDuringDisruption {
|
|
|
|
|
By("continuously hitting the Ingress IP")
|
|
|
|
|
wait.Until(func() {
|
|
|
|
|
framework.ExpectNoError(framework.PollURL(fmt.Sprintf("https://%v/", t.ip), "", framework.LoadBalancerPollTimeout, t.jig.PollInterval, t.httpClient, false))
|
|
|
|
|
framework.ExpectNoError(framework.PollURL(fmt.Sprintf("https://%v/%v", t.ip, path), host, framework.LoadBalancerPollTimeout, t.jig.PollInterval, t.httpClient, false))
|
|
|
|
|
}, t.jig.PollInterval, done)
|
|
|
|
|
} else {
|
|
|
|
|
By("waiting for upgrade to finish without checking if Ingress remains up")
|
|
|
|
|
<-done
|
|
|
|
|
}
|
|
|
|
|
By("hitting the Ingress IP " + t.ip)
|
|
|
|
|
framework.ExpectNoError(framework.PollURL(fmt.Sprintf("https://%v/", t.ip), "", framework.LoadBalancerPollTimeout, t.jig.PollInterval, t.httpClient, false))
|
|
|
|
|
framework.ExpectNoError(framework.PollURL(fmt.Sprintf("https://%v/%v", t.ip, path), host, framework.LoadBalancerPollTimeout, t.jig.PollInterval, t.httpClient, false))
|
|
|
|
|
|
|
|
|
|
// We want to manually trigger a sync because then we can easily verify
|
|
|
|
|
// a correct sync completed after update.
|
|
|
|
|
By("updating ingress spec to manually trigger a sync")
|
|
|
|
|
t.jig.Update(func(ing *extensions.Ingress) {
|
|
|
|
|
ing.Spec.TLS[0].Hosts = append(ing.Spec.TLS[0].Hosts, "ingress.test.com")
|
|
|
|
|
ing.Spec.Rules = append(
|
|
|
|
|
ing.Spec.Rules,
|
|
|
|
|
extensions.IngressRule{
|
|
|
|
|
Host: "ingress.test.com",
|
|
|
|
|
IngressRuleValue: extensions.IngressRuleValue{
|
|
|
|
|
HTTP: &extensions.HTTPIngressRuleValue{
|
|
|
|
|
Paths: []extensions.HTTPIngressPath{
|
|
|
|
|
{
|
|
|
|
|
Path: "/test",
|
|
|
|
|
// Note: Dependant on using "static-ip-2" manifest.
|
|
|
|
|
Backend: *(ing.Spec.Backend),
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
ing.Spec.Rules[0].IngressRuleValue.HTTP.Paths = append(
|
|
|
|
|
ing.Spec.Rules[0].IngressRuleValue.HTTP.Paths,
|
|
|
|
|
extensions.HTTPIngressPath{
|
|
|
|
|
Path: "/test",
|
|
|
|
|
// Note: Dependant on using "static-ip-2" manifest.
|
|
|
|
|
Backend: ing.Spec.Rules[0].IngressRuleValue.HTTP.Paths[0].Backend,
|
|
|
|
|
})
|
|
|
|
|
})
|
|
|
|
|
// WaitForIngress() tests that all paths are pinged, which is how we know
|
|
|
|
|