From 4d25306b52a3f7663f6d8e21d54442111d28b74b Mon Sep 17 00:00:00 2001 From: Manuel de Brito Fontes Date: Sun, 1 May 2016 19:07:31 -0300 Subject: [PATCH] Allow custom default server when host is empty in ingress rule --- controllers/nginx/controller.go | 43 +++++++++++++------ .../custom-template/custom-template.yaml | 2 +- 2 files changed, 30 insertions(+), 15 deletions(-) diff --git a/controllers/nginx/controller.go b/controllers/nginx/controller.go index 0a3e3838a..bbf016170 100644 --- a/controllers/nginx/controller.go +++ b/controllers/nginx/controller.go @@ -618,15 +618,18 @@ func (lbc *loadBalancerController) getUpstreamServers(data []interface{}) ([]*ng upstreams[defUpstreamName] = lbc.getDefaultUpstream() servers := lbc.createServers(data) - // default server - no servername. - servers[defServerName] = &nginx.Server{ - Name: defServerName, - Locations: []*nginx.Location{{ - Path: rootLocation, - IsDefBackend: true, - Upstream: *lbc.getDefaultUpstream(), - }, - }, + if _, ok := servers[defServerName]; !ok { + // default server - no servername. + // there is no rule with default backend + servers[defServerName] = &nginx.Server{ + Name: defServerName, + Locations: []*nginx.Location{{ + Path: rootLocation, + IsDefBackend: true, + Upstream: *lbc.getDefaultUpstream(), + }, + }, + } } for _, ingIf := range data { @@ -637,7 +640,14 @@ func (lbc *loadBalancerController) getUpstreamServers(data []interface{}) ([]*ng 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 { 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) 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 = append(locs, &nginx.Location{ Path: rootLocation, IsDefBackend: true, 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 { - server := servers[rule.Host] + if pemFile, ok := pems[host]; ok { + server := servers[host] server.SSL = true server.SSLCertificate = pemFile server.SSLCertificateKey = pemFile diff --git a/controllers/nginx/examples/custom-template/custom-template.yaml b/controllers/nginx/examples/custom-template/custom-template.yaml index ac7991033..65ef90e86 100644 --- a/controllers/nginx/examples/custom-template/custom-template.yaml +++ b/controllers/nginx/examples/custom-template/custom-template.yaml @@ -16,7 +16,7 @@ spec: spec: terminationGracePeriodSeconds: 60 containers: - - image: aledbf/nginx-third-party:0.15 + - image: gcr.io/google_containers/nginx-ingress-controller:0.6 name: nginx-ingress-lb imagePullPolicy: Always livenessProbe: