From d8cb8f1064395dac0469b811d476e4fe5a51ce8f Mon Sep 17 00:00:00 2001 From: Huy Le Date: Tue, 5 Mar 2019 13:41:45 -0800 Subject: [PATCH] Added Namespace Flag for Flagger - introduce the namespace flag for flagger to watch a single namespace for Canary Objects --- charts/flagger/templates/deployment.yaml | 3 +++ charts/flagger/values.yaml | 3 +++ cmd/flagger/main.go | 11 ++++++++++- 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/charts/flagger/templates/deployment.yaml b/charts/flagger/templates/deployment.yaml index 347ca7ab7..043c50ed4 100644 --- a/charts/flagger/templates/deployment.yaml +++ b/charts/flagger/templates/deployment.yaml @@ -36,6 +36,9 @@ spec: - ./flagger - -log-level=info - -metrics-server={{ .Values.metricsServer }} + {{- if .Values.namespace }} + - -namespace={{ .Values.namespace }} + {{- end }} {{- if .Values.slack.url }} - -slack-url={{ .Values.slack.url }} - -slack-user={{ .Values.slack.user }} diff --git a/charts/flagger/values.yaml b/charts/flagger/values.yaml index 788408c85..dee636870 100644 --- a/charts/flagger/values.yaml +++ b/charts/flagger/values.yaml @@ -7,6 +7,9 @@ image: metricsServer: "http://prometheus.istio-system.svc.cluster.local:9090" +# Namespace that flagger will watch for Canary objects +namespace: "" + slack: user: flagger channel: diff --git a/cmd/flagger/main.go b/cmd/flagger/main.go index 127e67b55..2cf5c6621 100644 --- a/cmd/flagger/main.go +++ b/cmd/flagger/main.go @@ -35,6 +35,7 @@ var ( threadiness int zapReplaceGlobals bool zapEncoding string + namespace string ) func init() { @@ -50,6 +51,7 @@ func init() { flag.IntVar(&threadiness, "threadiness", 2, "Worker concurrency.") flag.BoolVar(&zapReplaceGlobals, "zap-replace-globals", false, "Whether to change the logging level of the global zap logger.") flag.StringVar(&zapEncoding, "zap-encoding", "json", "Zap logger encoding.") + flag.StringVar(&namespace, "namespace", "", "Namespace that flagger would watch canary object") } func main() { @@ -87,7 +89,14 @@ func main() { logger.Fatalf("Error building example clientset: %s", err.Error()) } - flaggerInformerFactory := informers.NewSharedInformerFactory(flaggerClient, time.Second*30) + if namespace == "" { + logger.Infof("Flagger Canary's Watcher is on all namespace") + } else { + logger.Infof("Flagger Canary's Watcher is on namespace %s", namespace) + } + + flaggerInformerFactory := informers.NewSharedInformerFactoryWithOptions(flaggerClient, time.Second*30, informers.WithNamespace(namespace)) + canaryInformer := flaggerInformerFactory.Flagger().V1alpha3().Canaries() logger.Infof("Starting flagger version %s revision %s", version.VERSION, version.REVISION)