mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-20 17:16:18 +00:00
add e2e test for syncing endpoints to NEG
This commit is contained in:
parent
59e0fca5a5
commit
23ff1bb704
@ -1104,6 +1104,28 @@ func (j *IngressTestJig) ConstructFirewallForIngress(gceController *GCEIngressCo
|
|||||||
return &fw
|
return &fw
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetDistinctResponseFromIngress tries GET call to the ingress VIP and return all distinct responses.
|
||||||
|
func (j *IngressTestJig) GetDistinctResponseFromIngress() (sets.String, error) {
|
||||||
|
// Wait for the loadbalancer IP.
|
||||||
|
address, err := WaitForIngressAddress(j.Client, j.Ingress.Namespace, j.Ingress.Name, LoadBalancerPollTimeout)
|
||||||
|
if err != nil {
|
||||||
|
Failf("Ingress failed to acquire an IP address within %v", LoadBalancerPollTimeout)
|
||||||
|
}
|
||||||
|
responses := sets.NewString()
|
||||||
|
timeoutClient := &http.Client{Timeout: IngressReqTimeout}
|
||||||
|
|
||||||
|
for i := 0; i < 100; i++ {
|
||||||
|
url := fmt.Sprintf("http://%v", address)
|
||||||
|
res, err := SimpleGET(timeoutClient, url, "")
|
||||||
|
if err != nil {
|
||||||
|
Logf("Failed to GET %q. Got responses: %q: %v", url, res, err)
|
||||||
|
return responses, err
|
||||||
|
}
|
||||||
|
responses.Insert(res)
|
||||||
|
}
|
||||||
|
return responses, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (cont *GCEIngressController) getL7AddonUID() (string, error) {
|
func (cont *GCEIngressController) getL7AddonUID() (string, error) {
|
||||||
Logf("Retrieving UID from config map: %v/%v", metav1.NamespaceSystem, uidConfigMap)
|
Logf("Retrieving UID from config map: %v/%v", metav1.NamespaceSystem, uidConfigMap)
|
||||||
cm, err := cont.Client.Core().ConfigMaps(metav1.NamespaceSystem).Get(uidConfigMap, metav1.GetOptions{})
|
cm, err := cont.Client.Core().ConfigMaps(metav1.NamespaceSystem).Get(uidConfigMap, metav1.GetOptions{})
|
||||||
|
@ -34,6 +34,7 @@ import (
|
|||||||
|
|
||||||
const (
|
const (
|
||||||
NEGAnnotation = "alpha.cloud.google.com/load-balancer-neg"
|
NEGAnnotation = "alpha.cloud.google.com/load-balancer-neg"
|
||||||
|
NEGUpdateTimeout = 2 * time.Minute
|
||||||
)
|
)
|
||||||
|
|
||||||
var _ = SIGDescribe("Loadbalancing: L7", func() {
|
var _ = SIGDescribe("Loadbalancing: L7", func() {
|
||||||
@ -237,6 +238,47 @@ var _ = SIGDescribe("Loadbalancing: L7", func() {
|
|||||||
})
|
})
|
||||||
jig.WaitForIngress(true)
|
jig.WaitForIngress(true)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
It("should sync endpoints to NEG", func() {
|
||||||
|
name := "hostname"
|
||||||
|
scaleAndValidateNEG := func(num int) {
|
||||||
|
scale, err := f.ClientSet.ExtensionsV1beta1().Deployments(ns).GetScale(name, metav1.GetOptions{})
|
||||||
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
if scale.Spec.Replicas != int32(num) {
|
||||||
|
scale.Spec.Replicas = int32(num)
|
||||||
|
_, err = f.ClientSet.ExtensionsV1beta1().Deployments(ns).UpdateScale(name, scale)
|
||||||
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
}
|
||||||
|
wait.Poll(5*time.Second, NEGUpdateTimeout, func() (bool, error) {
|
||||||
|
res, err := jig.GetDistinctResponseFromIngress()
|
||||||
|
if err != nil {
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
return res.Len() == num, err
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
By("Create a basic HTTP ingress using NEG")
|
||||||
|
jig.CreateIngress(filepath.Join(framework.IngressManifestPath, "neg"), ns, map[string]string{}, map[string]string{})
|
||||||
|
jig.WaitForIngress(true)
|
||||||
|
usingNEG, err := gceController.BackendServiceUsingNEG(jig.GetIngressNodePorts(false))
|
||||||
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
Expect(usingNEG).To(BeTrue())
|
||||||
|
// initial replicas number is 1
|
||||||
|
scaleAndValidateNEG(1)
|
||||||
|
|
||||||
|
By("Scale up number of backends to 5")
|
||||||
|
scaleAndValidateNEG(5)
|
||||||
|
|
||||||
|
By("Scale down number of backends to 3")
|
||||||
|
scaleAndValidateNEG(3)
|
||||||
|
|
||||||
|
By("Scale up number of backends to 6")
|
||||||
|
scaleAndValidateNEG(6)
|
||||||
|
|
||||||
|
By("Scale down number of backends to 2")
|
||||||
|
scaleAndValidateNEG(3)
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
// Time: borderline 5m, slow by design
|
// Time: borderline 5m, slow by design
|
||||||
|
Loading…
Reference in New Issue
Block a user