From 27b4bcc648d9c72d990a0dd115988646c0f86fcd Mon Sep 17 00:00:00 2001 From: stefanprodan Date: Thu, 7 Nov 2019 09:34:53 +0200 Subject: [PATCH 1/2] Use the specified replicas when scaling up the canary --- pkg/canary/deployer.go | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/pkg/canary/deployer.go b/pkg/canary/deployer.go index ef9766377..a11b80ff9 100644 --- a/pkg/canary/deployer.go +++ b/pkg/canary/deployer.go @@ -185,6 +185,30 @@ func (c *Deployer) Scale(cd *flaggerv1.Canary, replicas int32) error { return nil } +func (c *Deployer) ScaleUp(cd *flaggerv1.Canary) error { + targetName := cd.Spec.TargetRef.Name + dep, err := c.KubeClient.AppsV1().Deployments(cd.Namespace).Get(targetName, metav1.GetOptions{}) + if err != nil { + if errors.IsNotFound(err) { + return fmt.Errorf("deployment %s.%s not found", targetName, cd.Namespace) + } + return fmt.Errorf("deployment %s.%s query error %v", targetName, cd.Namespace, err) + } + + replicas := int32p(1) + if dep.Spec.Replicas != nil && *dep.Spec.Replicas > 0 { + replicas = dep.Spec.Replicas + } + depCopy := dep.DeepCopy() + depCopy.Spec.Replicas = replicas + + _, err = c.KubeClient.AppsV1().Deployments(dep.Namespace).Update(depCopy) + if err != nil { + return fmt.Errorf("scaling %s.%s to %v failed: %v", depCopy.GetName(), depCopy.Namespace, replicas, err) + } + return nil +} + func (c *Deployer) createPrimaryDeployment(cd *flaggerv1.Canary) (string, map[string]int32, error) { targetName := cd.Spec.TargetRef.Name primaryName := fmt.Sprintf("%s-primary", cd.Spec.TargetRef.Name) From 0e9fe8a446b4be30a4adae462555fb2ea5723c03 Mon Sep 17 00:00:00 2001 From: stefanprodan Date: Thu, 7 Nov 2019 09:36:38 +0200 Subject: [PATCH 2/2] Remove the traffic mention from the custom metrics error log Fix: #361 --- pkg/controller/scheduler.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/controller/scheduler.go b/pkg/controller/scheduler.go index 2d1486d17..fda8e4180 100644 --- a/pkg/controller/scheduler.go +++ b/pkg/controller/scheduler.go @@ -622,7 +622,7 @@ func (c *Controller) checkCanaryStatus(cd *flaggerv1.Canary, shouldAdvance bool) c.recordEventInfof(cd, "New revision detected! Scaling up %s.%s", cd.Spec.TargetRef.Name, cd.Namespace) c.sendNotification(cd, "New revision detected, starting canary analysis.", true, false) - if err := c.deployer.Scale(cd, 1); err != nil { + if err := c.deployer.ScaleUp(cd); err != nil { c.recordEventErrorf(cd, "%v", err) return false } @@ -817,8 +817,8 @@ func (c *Controller) analyseCanary(r *flaggerv1.Canary) bool { val, err := observerFactory.Client.RunQuery(metric.Query) if err != nil { if strings.Contains(err.Error(), "no values found") { - c.recordEventWarningf(r, "Halt advancement no values found for metric %s probably %s.%s is not receiving traffic", - metric.Name, r.Spec.TargetRef.Name, r.Namespace) + c.recordEventWarningf(r, "Halt advancement no values found for custom metric: %s", + metric.Name) } else { c.recordEventErrorf(r, "Metrics server %s query failed for %s: %v", metricsServer, metric.Name, err) }