Allow custom default server when host is empty in ingress rule
This commit is contained in:
parent
b086a686dd
commit
4d25306b52
2 changed files with 30 additions and 15 deletions
|
@ -618,15 +618,18 @@ func (lbc *loadBalancerController) getUpstreamServers(data []interface{}) ([]*ng
|
||||||
upstreams[defUpstreamName] = lbc.getDefaultUpstream()
|
upstreams[defUpstreamName] = lbc.getDefaultUpstream()
|
||||||
|
|
||||||
servers := lbc.createServers(data)
|
servers := lbc.createServers(data)
|
||||||
// default server - no servername.
|
if _, ok := servers[defServerName]; !ok {
|
||||||
servers[defServerName] = &nginx.Server{
|
// default server - no servername.
|
||||||
Name: defServerName,
|
// there is no rule with default backend
|
||||||
Locations: []*nginx.Location{{
|
servers[defServerName] = &nginx.Server{
|
||||||
Path: rootLocation,
|
Name: defServerName,
|
||||||
IsDefBackend: true,
|
Locations: []*nginx.Location{{
|
||||||
Upstream: *lbc.getDefaultUpstream(),
|
Path: rootLocation,
|
||||||
},
|
IsDefBackend: true,
|
||||||
},
|
Upstream: *lbc.getDefaultUpstream(),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, ingIf := range data {
|
for _, ingIf := range data {
|
||||||
|
@ -637,7 +640,14 @@ func (lbc *loadBalancerController) getUpstreamServers(data []interface{}) ([]*ng
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
server := servers[rule.Host]
|
host := rule.Host
|
||||||
|
if host == "" {
|
||||||
|
host = defServerName
|
||||||
|
}
|
||||||
|
server := servers[host]
|
||||||
|
if server == nil {
|
||||||
|
server = servers["_"]
|
||||||
|
}
|
||||||
|
|
||||||
for _, path := range rule.HTTP.Paths {
|
for _, path := range rule.HTTP.Paths {
|
||||||
upsName := fmt.Sprintf("%v-%v-%v", ing.GetNamespace(), path.Backend.ServiceName, path.Backend.ServicePort.String())
|
upsName := fmt.Sprintf("%v-%v-%v", ing.GetNamespace(), path.Backend.ServiceName, path.Backend.ServicePort.String())
|
||||||
|
@ -768,18 +778,23 @@ func (lbc *loadBalancerController) createServers(data []interface{}) map[string]
|
||||||
ing := ingIf.(*extensions.Ingress)
|
ing := ingIf.(*extensions.Ingress)
|
||||||
|
|
||||||
for _, rule := range ing.Spec.Rules {
|
for _, rule := range ing.Spec.Rules {
|
||||||
if _, ok := servers[rule.Host]; !ok {
|
host := rule.Host
|
||||||
|
if host == "" {
|
||||||
|
host = defServerName
|
||||||
|
}
|
||||||
|
|
||||||
|
if _, ok := servers[host]; !ok {
|
||||||
locs := []*nginx.Location{}
|
locs := []*nginx.Location{}
|
||||||
locs = append(locs, &nginx.Location{
|
locs = append(locs, &nginx.Location{
|
||||||
Path: rootLocation,
|
Path: rootLocation,
|
||||||
IsDefBackend: true,
|
IsDefBackend: true,
|
||||||
Upstream: *lbc.getDefaultUpstream(),
|
Upstream: *lbc.getDefaultUpstream(),
|
||||||
})
|
})
|
||||||
servers[rule.Host] = &nginx.Server{Name: rule.Host, Locations: locs}
|
servers[host] = &nginx.Server{Name: host, Locations: locs}
|
||||||
}
|
}
|
||||||
|
|
||||||
if pemFile, ok := pems[rule.Host]; ok {
|
if pemFile, ok := pems[host]; ok {
|
||||||
server := servers[rule.Host]
|
server := servers[host]
|
||||||
server.SSL = true
|
server.SSL = true
|
||||||
server.SSLCertificate = pemFile
|
server.SSLCertificate = pemFile
|
||||||
server.SSLCertificateKey = pemFile
|
server.SSLCertificateKey = pemFile
|
||||||
|
|
|
@ -16,7 +16,7 @@ spec:
|
||||||
spec:
|
spec:
|
||||||
terminationGracePeriodSeconds: 60
|
terminationGracePeriodSeconds: 60
|
||||||
containers:
|
containers:
|
||||||
- image: aledbf/nginx-third-party:0.15
|
- image: gcr.io/google_containers/nginx-ingress-controller:0.6
|
||||||
name: nginx-ingress-lb
|
name: nginx-ingress-lb
|
||||||
imagePullPolicy: Always
|
imagePullPolicy: Always
|
||||||
livenessProbe:
|
livenessProbe:
|
||||||
|
|
Loading…
Reference in a new issue