@@ -335,10 +335,14 @@ func (lbc *LoadBalancerController) syncEndp(key string) {
335335 if ! isNginxIngress (& ing ) {
336336 continue
337337 }
338- ingEx := lbc .createIngress (& ing )
338+ ingEx , err := lbc .createIngress (& ing )
339+ if err != nil {
340+ glog .Warningf ("Error updating endpoints for %v/%v: %v, skipping" , ing .Namespace , ing .Name , err )
341+ continue
342+ }
339343 glog .V (3 ).Infof ("Updating Endpoints for %v/%v" , ing .Name , ing .Namespace )
340344 name := ing .Namespace + "-" + ing .Name
341- lbc .cnf .UpdateEndpoints (name , & ingEx )
345+ lbc .cnf .UpdateEndpoints (name , ingEx )
342346 }
343347 }
344348
@@ -363,6 +367,20 @@ func (lbc *LoadBalancerController) syncCfgm(key string) {
363367 if proxyReadTimeout , exists := cfgm .Data ["proxy-read-timeout" ]; exists {
364368 cfg .ProxyReadTimeout = proxyReadTimeout
365369 }
370+ if proxyHideHeaders , exists , err := nginx .GetMapKeyAsStringSlice (cfgm .Data , "proxy-hide-headers" , cfgm ); exists {
371+ if err != nil {
372+ glog .Error (err )
373+ } else {
374+ cfg .ProxyHideHeaders = proxyHideHeaders
375+ }
376+ }
377+ if proxyPassHeaders , exists , err := nginx .GetMapKeyAsStringSlice (cfgm .Data , "proxy-pass-headers" , cfgm ); exists {
378+ if err != nil {
379+ glog .Error (err )
380+ } else {
381+ cfg .ProxyPassHeaders = proxyPassHeaders
382+ }
383+ }
366384 if clientMaxBodySize , exists := cfgm .Data ["client-max-body-size" ]; exists {
367385 cfg .ClientMaxBodySize = clientMaxBodySize
368386 }
@@ -412,6 +430,57 @@ func (lbc *LoadBalancerController) syncCfgm(key string) {
412430 }
413431 }
414432
433+ if proxyProtocol , exists , err := nginx .GetMapKeyAsBool (cfgm .Data , "proxy-protocol" , cfgm ); exists {
434+ if err != nil {
435+ glog .Error (err )
436+ } else {
437+ cfg .ProxyProtocol = proxyProtocol
438+ }
439+ }
440+
441+ // ngx_http_realip_module
442+ if realIPHeader , exists := cfgm .Data ["real-ip-header" ]; exists {
443+ cfg .RealIPHeader = realIPHeader
444+ }
445+ if setRealIPFrom , exists , err := nginx .GetMapKeyAsStringSlice (cfgm .Data , "set-real-ip-from" , cfgm ); exists {
446+ if err != nil {
447+ glog .Error (err )
448+ } else {
449+ cfg .SetRealIPFrom = setRealIPFrom
450+ }
451+ }
452+ if realIPRecursive , exists , err := nginx .GetMapKeyAsBool (cfgm .Data , "real-ip-recursive" , cfgm ); exists {
453+ if err != nil {
454+ glog .Error (err )
455+ } else {
456+ cfg .RealIPRecursive = realIPRecursive
457+ }
458+ }
459+
460+ // SSL block
461+ if sslProtocols , exists := cfgm .Data ["ssl-protocols" ]; exists {
462+ cfg .MainServerSSLProtocols = sslProtocols
463+ }
464+ if sslPreferServerCiphers , exists , err := nginx .GetMapKeyAsBool (cfgm .Data , "ssl-prefer-server-ciphers" , cfgm ); exists {
465+ if err != nil {
466+ glog .Error (err )
467+ } else {
468+ cfg .MainServerSSLPreferServerCiphers = sslPreferServerCiphers
469+ }
470+ }
471+ if sslCiphers , exists := cfgm .Data ["ssl-ciphers" ]; exists {
472+ cfg .MainServerSSLCiphers = strings .Trim (sslCiphers , "\n " )
473+ }
474+ if sslDHParamFile , exists := cfgm .Data ["ssl-dhparam-file" ]; exists {
475+ sslDHParamFile = strings .Trim (sslDHParamFile , "\n " )
476+ fileName , err := lbc .cnf .AddOrUpdateDHParam (sslDHParamFile )
477+ if err != nil {
478+ glog .Errorf ("Configmap %s/%s: Could not update dhparams: %v" , cfgm .GetNamespace (), cfgm .GetName (), err )
479+ } else {
480+ cfg .MainServerSSLDHParam = fileName
481+ }
482+ }
483+
415484 if logFormat , exists := cfgm .Data ["log-format" ]; exists {
416485 cfg .MainLogFormat = logFormat
417486 }
@@ -462,8 +531,12 @@ func (lbc *LoadBalancerController) syncIng(key string) {
462531 glog .V (2 ).Infof ("Adding or Updating Ingress: %v\n " , key )
463532
464533 ing := obj .(* extensions.Ingress )
465- ingEx := lbc .createIngress (ing )
466- lbc .cnf .AddOrUpdateIngress (name , & ingEx )
534+ ingEx , err := lbc .createIngress (ing )
535+ if err != nil {
536+ lbc .ingQueue .requeueAfter (key , err , 5 * time .Second )
537+ return
538+ }
539+ lbc .cnf .AddOrUpdateIngress (name , ingEx )
467540 }
468541}
469542
@@ -501,8 +574,8 @@ func (lbc *LoadBalancerController) getIngressForEndpoints(obj interface{}) []ext
501574 return ings
502575}
503576
504- func (lbc * LoadBalancerController ) createIngress (ing * extensions.Ingress ) nginx.IngressEx {
505- ingEx := nginx.IngressEx {
577+ func (lbc * LoadBalancerController ) createIngress (ing * extensions.Ingress ) ( * nginx.IngressEx , error ) {
578+ ingEx := & nginx.IngressEx {
506579 Ingress : ing ,
507580 }
508581
@@ -511,8 +584,7 @@ func (lbc *LoadBalancerController) createIngress(ing *extensions.Ingress) nginx.
511584 secretName := tls .SecretName
512585 secret , err := lbc .client .Secrets (ing .Namespace ).Get (secretName )
513586 if err != nil {
514- glog .Warningf ("Error retrieving secret %v for Ingress %v: %v" , secretName , ing .Name , err )
515- continue
587+ return nil , fmt .Errorf ("Error retrieving secret %v for Ingress %v: %v" , secretName , ing .Name , err )
516588 }
517589 ingEx .Secrets [secretName ] = secret
518590 }
@@ -542,7 +614,7 @@ func (lbc *LoadBalancerController) createIngress(ing *extensions.Ingress) nginx.
542614 }
543615 }
544616
545- return ingEx
617+ return ingEx , nil
546618}
547619
548620func (lbc * LoadBalancerController ) getEndpointsForIngressBackend (backend * extensions.IngressBackend , namespace string ) ([]string , error ) {
0 commit comments