From 190788848a1abd96a393ef9c2e35081848ae3dc6 Mon Sep 17 00:00:00 2001 From: Manuel de Brito Fontes Date: Tue, 11 Apr 2017 11:47:49 -0300 Subject: [PATCH 1/2] Read resolv file just oncce --- controllers/nginx/pkg/cmd/controller/nginx.go | 11 +++++++++++ controllers/nginx/pkg/template/configmap.go | 8 -------- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/controllers/nginx/pkg/cmd/controller/nginx.go b/controllers/nginx/pkg/cmd/controller/nginx.go index 8dcefd872..12ad8ec7f 100644 --- a/controllers/nginx/pkg/cmd/controller/nginx.go +++ b/controllers/nginx/pkg/cmd/controller/nginx.go @@ -41,6 +41,7 @@ import ( "k8s.io/ingress/controllers/nginx/pkg/version" "k8s.io/ingress/core/pkg/ingress" "k8s.io/ingress/core/pkg/ingress/defaults" + "k8s.io/ingress/core/pkg/net/dns" "k8s.io/ingress/core/pkg/net/ssl" ) @@ -69,10 +70,17 @@ func newNGINXController() ingress.Controller { if ngx == "" { ngx = binary } + + h, err := dns.GetSystemNameServers() + if err != nil { + glog.Warningf("unexpected error reading system nameservers: %v", err) + } + n := &NGINXController{ binary: ngx, configmap: &api_v1.ConfigMap{}, isIPV6Enabled: isIPv6Enabled(), + resolver: h, } var onChange func() @@ -125,6 +133,8 @@ type NGINXController struct { // returns true if IPV6 is enabled in the pod isIPV6Enabled bool + + resolver []net.IP } // Start start a new NGINX master process running in foreground. @@ -340,6 +350,7 @@ func (n *NGINXController) OnUpdate(ingressCfg ingress.Configuration) ([]byte, er } cfg := ngx_template.ReadConfig(n.configmap.Data) + cfg.Resolver = n.resolver // we need to check if the status module configuration changed if cfg.EnableVtsStatus { diff --git a/controllers/nginx/pkg/template/configmap.go b/controllers/nginx/pkg/template/configmap.go index 701d5a238..0597faa7e 100644 --- a/controllers/nginx/pkg/template/configmap.go +++ b/controllers/nginx/pkg/template/configmap.go @@ -24,7 +24,6 @@ import ( "github.com/mitchellh/mapstructure" "k8s.io/ingress/controllers/nginx/pkg/config" - "k8s.io/ingress/core/pkg/net/dns" ) const ( @@ -72,13 +71,6 @@ func ReadConfig(src map[string]string) config.Configuration { to.SkipAccessLogURLs = skipUrls to.WhitelistSourceRange = whitelist - h, err := dns.GetSystemNameServers() - if err != nil { - glog.Warningf("unexpected error reading system nameservers: %v", err) - } else { - to.Resolver = h - } - config := &mapstructure.DecoderConfig{ Metadata: nil, WeaklyTypedInput: true, From 8f3f51367aa312c8c9e16434ce16e2fd8fee613d Mon Sep 17 00:00:00 2001 From: Manuel de Brito Fontes Date: Tue, 11 Apr 2017 14:50:28 -0300 Subject: [PATCH 2/2] Remove test because of the refactoring --- controllers/nginx/pkg/template/configmap_test.go | 9 --------- 1 file changed, 9 deletions(-) diff --git a/controllers/nginx/pkg/template/configmap_test.go b/controllers/nginx/pkg/template/configmap_test.go index ff2c60203..ccca11041 100644 --- a/controllers/nginx/pkg/template/configmap_test.go +++ b/controllers/nginx/pkg/template/configmap_test.go @@ -22,7 +22,6 @@ import ( "github.com/kylelemons/godebug/pretty" "k8s.io/ingress/controllers/nginx/pkg/config" - "k8s.io/ingress/core/pkg/net/dns" ) func TestFilterErrors(t *testing.T) { @@ -54,26 +53,18 @@ func TestMergeConfigMapToStruct(t *testing.T) { def.UseProxyProtocol = true def.GzipTypes = "text/html" - h, err := dns.GetSystemNameServers() - if err != nil { - t.Errorf("unexpected error: %v", err) - } - def.Resolver = h - to := ReadConfig(conf) if diff := pretty.Compare(to, def); diff != "" { t.Errorf("unexpected diff: (-got +want)\n%s", diff) } def = config.NewDefault() - def.Resolver = h to = ReadConfig(map[string]string{}) if diff := pretty.Compare(to, def); diff != "" { t.Errorf("unexpected diff: (-got +want)\n%s", diff) } def = config.NewDefault() - def.Resolver = h def.WhitelistSourceRange = []string{"1.1.1.1/32"} to = ReadConfig(map[string]string{ "whitelist-source-range": "1.1.1.1/32",