diff --git a/cmd/flagger/main.go b/cmd/flagger/main.go index 8efb4cf8..62f442f7 100644 --- a/cmd/flagger/main.go +++ b/cmd/flagger/main.go @@ -83,6 +83,7 @@ var ( enableConfigTracking bool ver bool kubeconfigServiceMesh string + clusterName string ) func init() { @@ -115,6 +116,7 @@ func init() { flag.BoolVar(&enableConfigTracking, "enable-config-tracking", true, "Enable secrets and configmaps tracking.") flag.BoolVar(&ver, "version", false, "Print version") flag.StringVar(&kubeconfigServiceMesh, "kubeconfig-service-mesh", "", "Path to a kubeconfig for the service mesh control plane cluster.") + flag.StringVar(&clusterName, "cluster-name", "", "Cluster name to be included in alert msgs.") } func main() { @@ -238,6 +240,7 @@ func main() { meshProvider, version.VERSION, fromEnv("EVENT_WEBHOOK_URL", eventWebhook), + clusterName, ) // leader election context diff --git a/pkg/controller/controller.go b/pkg/controller/controller.go index aad82e4c..87390ec5 100644 --- a/pkg/controller/controller.go +++ b/pkg/controller/controller.go @@ -66,6 +66,7 @@ type Controller struct { observerFactory *observers.Factory meshProvider string eventWebhook string + clusterName string } type Informers struct { @@ -87,6 +88,7 @@ func NewController( meshProvider string, version string, eventWebhook string, + clusterName string, ) *Controller { logger.Debug("Creating event broadcaster") flaggerscheme.AddToScheme(scheme.Scheme) @@ -118,6 +120,7 @@ func NewController( routerFactory: routerFactory, meshProvider: meshProvider, eventWebhook: eventWebhook, + clusterName: clusterName, } flaggerInformers.CanaryInformer.Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{ diff --git a/pkg/controller/events.go b/pkg/controller/events.go index c70123e6..283aa279 100644 --- a/pkg/controller/events.go +++ b/pkg/controller/events.go @@ -74,7 +74,7 @@ func (c *Controller) sendEventToWebhook(r *flaggerv1.Canary, eventType, template func (c *Controller) alert(canary *flaggerv1.Canary, message string, metadata bool, severity flaggerv1.AlertSeverity) { var fields []notifier.Field if metadata { - fields = alertMetadata(canary) + fields = alertMetadata(canary, c.clusterName) } // send alert with the global notifier @@ -173,8 +173,18 @@ func (c *Controller) alert(canary *flaggerv1.Canary, message string, metadata bo } } -func alertMetadata(canary *flaggerv1.Canary) []notifier.Field { +func alertMetadata(canary *flaggerv1.Canary, cluster string) []notifier.Field { var fields []notifier.Field + + if cluster != "" { + fields = append(fields, + notifier.Field{ + Name: "Cluster", + Value: cluster, + }, + ) + } + fields = append(fields, notifier.Field{ Name: "Target",