Merge pull request #6620 from nic-6443/sticky-session-fix

Fix sticky session not set for host in server-alias annotation (#6448)
This commit is contained in:
Kubernetes Prow Robot 2020-12-15 03:47:48 -08:00 committed by GitHub
commit fe65e9d22f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 50 additions and 0 deletions

View file

@ -651,6 +651,15 @@ func (n *NGINXController) getBackendServers(ingresses []*ingress.Ingress) ([]*in
locs[host] = []string{}
}
locs[host] = append(locs[host], path.Path)
if len(server.Aliases) > 0 {
for _, alias := range server.Aliases {
if _, ok := locs[alias]; !ok {
locs[alias] = []string{}
}
locs[alias] = append(locs[alias], path.Path)
}
}
}
}
}

View file

@ -311,4 +311,45 @@ var _ = framework.DescribeAnnotation("affinity session-cookie-name", func() {
Status(http.StatusOK).
Header("Set-Cookie").Contains("SERVERID=")
})
ginkgo.It("should work with server-alias annotation", func() {
host := "foo.com"
alias1 := "a1.foo.com"
alias2 := "a2.foo.com"
annotations := make(map[string]string)
annotations["nginx.ingress.kubernetes.io/affinity"] = "cookie"
annotations["nginx.ingress.kubernetes.io/session-cookie-name"] = "SERVERID"
annotations["nginx.ingress.kubernetes.io/server-alias"] = fmt.Sprintf("%s,%s", alias1, alias2)
ing := framework.NewSingleIngress(host, "/bar", host, f.Namespace, framework.EchoService, 80, annotations)
f.EnsureIngress(ing)
f.WaitForNginxServer(host,
func(server string) bool {
//server alias sort by sort.Strings(), see: internal/ingress/annotations/alias/main.go:60
return strings.Contains(server, fmt.Sprintf("server_name %s %s %s ;", host, alias1, alias2))
})
f.HTTPTestClient().
GET("/bar").
WithHeader("Host", host).
Expect().
Status(http.StatusOK).
Header("Set-Cookie").Contains("SERVERID=")
f.HTTPTestClient().
GET("/bar").
WithHeader("Host", alias1).
Expect().
Status(http.StatusOK).
Header("Set-Cookie").Contains("SERVERID=")
f.HTTPTestClient().
GET("/bar").
WithHeader("Host", alias2).
Expect().
Status(http.StatusOK).
Header("Set-Cookie").Contains("SERVERID=")
})
})