From 3543c4bb283d57a2f4114aeaf9d32f8aa21d1ffd Mon Sep 17 00:00:00 2001 From: Denis Dabischa Date: Tue, 16 Jun 2020 08:57:23 +0200 Subject: [PATCH 1/2] Add additional varnisch run parameter Add additional varnisch run parameter Signed-off-by: Denis Dabischa --- cmd/kube-httpcache/internal/flags.go | 10 ++++++---- cmd/kube-httpcache/main.go | 1 + pkg/controller/run.go | 27 ++++++++++++++++++++------ pkg/controller/types.go | 29 +++++++++++++++------------- 4 files changed, 44 insertions(+), 23 deletions(-) diff --git a/cmd/kube-httpcache/internal/flags.go b/cmd/kube-httpcache/internal/flags.go index 128a5cb1..72ffbc05 100644 --- a/cmd/kube-httpcache/internal/flags.go +++ b/cmd/kube-httpcache/internal/flags.go @@ -42,10 +42,11 @@ type KubeHTTPProxyFlags struct { Port int } Varnish struct { - SecretFile string - Storage string - VCLTemplate string - VCLTemplatePoll bool + SecretFile string + Storage string + AdditionalParameter string + VCLTemplate string + VCLTemplatePoll bool } } @@ -82,6 +83,7 @@ func (f *KubeHTTPProxyFlags) Parse() error { flag.StringVar(&f.Varnish.SecretFile, "varnish-secret-file", "/etc/varnish/secret", "Varnish secret file") flag.StringVar(&f.Varnish.Storage, "varnish-storage", "file,/tmp/varnish-data,1G", "varnish storage config") flag.StringVar(&f.Varnish.VCLTemplate, "varnish-vcl-template", "/etc/varnish/default.vcl.tmpl", "VCL template file") + flag.StringVar(&f.Varnish.AdditionalParameter, "varnish-additional-parameter", "", "Additional varnish start parameter (-p, seperate by comma), like 'ban_dups=on,cli_timeout=30'") flag.BoolVar(&f.Varnish.VCLTemplatePoll, "varnish-vcl-template-poll", false, "poll for file changes instead of using inotify (useful on some network filesystems)") flag.Parse() diff --git a/cmd/kube-httpcache/main.go b/cmd/kube-httpcache/main.go index 35120f3e..4c79c3db 100644 --- a/cmd/kube-httpcache/main.go +++ b/cmd/kube-httpcache/main.go @@ -112,6 +112,7 @@ func main() { varnishController, err := controller.NewVarnishController( opts.Varnish.SecretFile, opts.Varnish.Storage, + opts.Varnish.AdditionalParameter, opts.Frontend.Address, opts.Frontend.Port, opts.Admin.Address, diff --git a/pkg/controller/run.go b/pkg/controller/run.go index 5fdf1a56..fa141f0d 100644 --- a/pkg/controller/run.go +++ b/pkg/controller/run.go @@ -3,6 +3,7 @@ package controller import ( "context" "fmt" + "strings" "os" "os/exec" @@ -61,12 +62,7 @@ func (v *VarnishController) startVarnish(ctx context.Context) (*exec.Cmd, <-chan c := exec.CommandContext( ctx, "varnishd", - "-F", - "-f", v.configFile, - "-S", v.SecretFile, - "-s", v.Storage, - "-a", fmt.Sprintf("%s:%d", v.FrontendAddr, v.FrontendPort), - "-T", fmt.Sprintf("%s:%d", v.AdminAddr, v.AdminPort), + v.generateParameter()... ) c.Dir = "/" @@ -82,3 +78,22 @@ func (v *VarnishController) startVarnish(ctx context.Context) (*exec.Cmd, <-chan return c, r } + +func (v *VarnishController) generateParameter() []string { + args := []string{ + "-F", + "-f", v.configFile, + "-S", v.SecretFile, + "-s", v.Storage, + "-a", fmt.Sprintf("%s:%d", v.FrontendAddr, v.FrontendPort), + "-T", fmt.Sprintf("%s:%d", v.AdminAddr, v.AdminPort), + } + + if v.AdditionalParameter != "" { + for _, val := range strings.Split(v.AdditionalParameter, ",") { + args = append(args, "-p") + args = append(args, val) + } + } + return args +} diff --git a/pkg/controller/types.go b/pkg/controller/types.go index b7e93a69..2f3e871f 100644 --- a/pkg/controller/types.go +++ b/pkg/controller/types.go @@ -19,6 +19,7 @@ type TemplateData struct { type VarnishController struct { SecretFile string Storage string + AdditionalParameter string FrontendAddr string FrontendPort int AdminAddr string @@ -40,6 +41,7 @@ type VarnishController struct { func NewVarnishController( secretFile string, storage string, + additionalParameter string, frontendAddr string, frontendPort int, adminAddr string, @@ -66,19 +68,20 @@ func NewVarnishController( } return &VarnishController{ - SecretFile: secretFile, - Storage: storage, - FrontendAddr: frontendAddr, - FrontendPort: frontendPort, - AdminAddr: adminAddr, - AdminPort: adminPort, - vclTemplate: tmpl, - vclTemplateUpdates: templateUpdates, - frontendUpdates: frontendUpdates, - backendUpdates: backendUpdates, - varnishSignaller: varnishSignaller, - configFile: "/tmp/vcl", - secret: secret, + SecretFile: secretFile, + Storage: storage, + AdditionalParameter: additionalParameter, + FrontendAddr: frontendAddr, + FrontendPort: frontendPort, + AdminAddr: adminAddr, + AdminPort: adminPort, + vclTemplate: tmpl, + vclTemplateUpdates: templateUpdates, + frontendUpdates: frontendUpdates, + backendUpdates: backendUpdates, + varnishSignaller: varnishSignaller, + configFile: "/tmp/vcl", + secret: secret, }, nil } From f384c55eef42a03b7917fab205c8c9275c422216 Mon Sep 17 00:00:00 2001 From: Martin Helmich Date: Wed, 17 Jun 2020 08:56:29 +0200 Subject: [PATCH 2/2] Rename "parameter" to "parameters" & run "go fmt" --- cmd/kube-httpcache/internal/flags.go | 12 ++++---- cmd/kube-httpcache/main.go | 2 +- pkg/controller/run.go | 10 +++---- pkg/controller/types.go | 42 ++++++++++++++-------------- pkg/watcher/template_watch.go | 2 +- pkg/watcher/template_watch_poll.go | 2 +- 6 files changed, 35 insertions(+), 35 deletions(-) diff --git a/cmd/kube-httpcache/internal/flags.go b/cmd/kube-httpcache/internal/flags.go index 72ffbc05..635eb9ca 100644 --- a/cmd/kube-httpcache/internal/flags.go +++ b/cmd/kube-httpcache/internal/flags.go @@ -42,11 +42,11 @@ type KubeHTTPProxyFlags struct { Port int } Varnish struct { - SecretFile string - Storage string - AdditionalParameter string - VCLTemplate string - VCLTemplatePoll bool + SecretFile string + Storage string + AdditionalParameters string + VCLTemplate string + VCLTemplatePoll bool } } @@ -83,7 +83,7 @@ func (f *KubeHTTPProxyFlags) Parse() error { flag.StringVar(&f.Varnish.SecretFile, "varnish-secret-file", "/etc/varnish/secret", "Varnish secret file") flag.StringVar(&f.Varnish.Storage, "varnish-storage", "file,/tmp/varnish-data,1G", "varnish storage config") flag.StringVar(&f.Varnish.VCLTemplate, "varnish-vcl-template", "/etc/varnish/default.vcl.tmpl", "VCL template file") - flag.StringVar(&f.Varnish.AdditionalParameter, "varnish-additional-parameter", "", "Additional varnish start parameter (-p, seperate by comma), like 'ban_dups=on,cli_timeout=30'") + flag.StringVar(&f.Varnish.AdditionalParameters, "varnish-additional-parameters", "", "Additional Varnish start parameters (-p, seperated by comma), like 'ban_dups=on,cli_timeout=30'") flag.BoolVar(&f.Varnish.VCLTemplatePoll, "varnish-vcl-template-poll", false, "poll for file changes instead of using inotify (useful on some network filesystems)") flag.Parse() diff --git a/cmd/kube-httpcache/main.go b/cmd/kube-httpcache/main.go index 4c79c3db..4ca405ea 100644 --- a/cmd/kube-httpcache/main.go +++ b/cmd/kube-httpcache/main.go @@ -112,7 +112,7 @@ func main() { varnishController, err := controller.NewVarnishController( opts.Varnish.SecretFile, opts.Varnish.Storage, - opts.Varnish.AdditionalParameter, + opts.Varnish.AdditionalParameters, opts.Frontend.Address, opts.Frontend.Port, opts.Admin.Address, diff --git a/pkg/controller/run.go b/pkg/controller/run.go index fa141f0d..344dbe93 100644 --- a/pkg/controller/run.go +++ b/pkg/controller/run.go @@ -3,9 +3,9 @@ package controller import ( "context" "fmt" - "strings" "os" "os/exec" + "strings" "github.com/golang/glog" "github.com/mittwald/kube-httpcache/pkg/watcher" @@ -62,7 +62,7 @@ func (v *VarnishController) startVarnish(ctx context.Context) (*exec.Cmd, <-chan c := exec.CommandContext( ctx, "varnishd", - v.generateParameter()... + v.generateArgs()..., ) c.Dir = "/" @@ -79,7 +79,7 @@ func (v *VarnishController) startVarnish(ctx context.Context) (*exec.Cmd, <-chan return c, r } -func (v *VarnishController) generateParameter() []string { +func (v *VarnishController) generateArgs() []string { args := []string{ "-F", "-f", v.configFile, @@ -89,8 +89,8 @@ func (v *VarnishController) generateParameter() []string { "-T", fmt.Sprintf("%s:%d", v.AdminAddr, v.AdminPort), } - if v.AdditionalParameter != "" { - for _, val := range strings.Split(v.AdditionalParameter, ",") { + if v.AdditionalParameters != "" { + for _, val := range strings.Split(v.AdditionalParameters, ",") { args = append(args, "-p") args = append(args, val) } diff --git a/pkg/controller/types.go b/pkg/controller/types.go index 2f3e871f..8b9534c1 100644 --- a/pkg/controller/types.go +++ b/pkg/controller/types.go @@ -17,13 +17,13 @@ type TemplateData struct { } type VarnishController struct { - SecretFile string - Storage string - AdditionalParameter string - FrontendAddr string - FrontendPort int - AdminAddr string - AdminPort int + SecretFile string + Storage string + AdditionalParameters string + FrontendAddr string + FrontendPort int + AdminAddr string + AdminPort int vclTemplate *template.Template vclTemplateUpdates chan []byte @@ -68,20 +68,20 @@ func NewVarnishController( } return &VarnishController{ - SecretFile: secretFile, - Storage: storage, - AdditionalParameter: additionalParameter, - FrontendAddr: frontendAddr, - FrontendPort: frontendPort, - AdminAddr: adminAddr, - AdminPort: adminPort, - vclTemplate: tmpl, - vclTemplateUpdates: templateUpdates, - frontendUpdates: frontendUpdates, - backendUpdates: backendUpdates, - varnishSignaller: varnishSignaller, - configFile: "/tmp/vcl", - secret: secret, + SecretFile: secretFile, + Storage: storage, + AdditionalParameters: additionalParameter, + FrontendAddr: frontendAddr, + FrontendPort: frontendPort, + AdminAddr: adminAddr, + AdminPort: adminPort, + vclTemplate: tmpl, + vclTemplateUpdates: templateUpdates, + frontendUpdates: frontendUpdates, + backendUpdates: backendUpdates, + varnishSignaller: varnishSignaller, + configFile: "/tmp/vcl", + secret: secret, }, nil } diff --git a/pkg/watcher/template_watch.go b/pkg/watcher/template_watch.go index 07441e84..c4bf6fc1 100644 --- a/pkg/watcher/template_watch.go +++ b/pkg/watcher/template_watch.go @@ -28,4 +28,4 @@ func (t *fsnotifyTemplateWatcher) watch(updates chan []byte, errors chan error) updates <- content } -} \ No newline at end of file +} diff --git a/pkg/watcher/template_watch_poll.go b/pkg/watcher/template_watch_poll.go index c7f32faa..5d9c6d84 100644 --- a/pkg/watcher/template_watch_poll.go +++ b/pkg/watcher/template_watch_poll.go @@ -49,4 +49,4 @@ func (t *pollingTemplateWatcher) watch(updates chan []byte, errors chan error) { updates <- content } } -} \ No newline at end of file +}