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:
commit
fe65e9d22f
2 changed files with 50 additions and 0 deletions
|
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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=")
|
||||
})
|
||||
|
||||
})
|
||||
|
|
Loading…
Reference in a new issue