From 0d94c01678b58a02ad1403d0dcf5da494554fe46 Mon Sep 17 00:00:00 2001 From: stefanprodan Date: Tue, 7 May 2019 11:10:19 +0300 Subject: [PATCH] Toggle canary annotation based on weight --- pkg/router/ingress.go | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/pkg/router/ingress.go b/pkg/router/ingress.go index 8e3f51d5..ffc663b1 100644 --- a/pkg/router/ingress.go +++ b/pkg/router/ingress.go @@ -167,17 +167,19 @@ func (i *IngressRouter) SetRoutes( } } - if canaryWeight > 0 { - iClone.Annotations = i.makeHeaderAnnotations(iClone.Annotations, header, headerValue, cookie) - } else { - iClone.Annotations = i.makeAnnotations(iClone.Annotations) - } - + iClone.Annotations = i.makeHeaderAnnotations(iClone.Annotations, header, headerValue, cookie) } else { // canary iClone.Annotations["nginx.ingress.kubernetes.io/canary-weight"] = fmt.Sprintf("%v", canaryWeight) } + // toggle canary + if canaryWeight > 0 { + iClone.Annotations["nginx.ingress.kubernetes.io/canary"] = "true" + } else { + iClone.Annotations = i.makeAnnotations(iClone.Annotations) + } + _, err = i.kubeClient.ExtensionsV1beta1().Ingresses(canary.Namespace).Update(iClone) if err != nil { return fmt.Errorf("ingress %s update error %v", canaryIngressName, err) @@ -189,12 +191,13 @@ func (i *IngressRouter) SetRoutes( func (i *IngressRouter) makeAnnotations(annotations map[string]string) map[string]string { res := make(map[string]string) for k, v := range annotations { - if !strings.Contains(v, "nginx.ingress.kubernetes.io/canary") { + if !strings.Contains(k, "nginx.ingress.kubernetes.io/canary") && + !strings.Contains(k, "kubectl.kubernetes.io/last-applied-configuration") { res[k] = v } } - res["nginx.ingress.kubernetes.io/canary"] = "true" + res["nginx.ingress.kubernetes.io/canary"] = "false" res["nginx.ingress.kubernetes.io/canary-weight"] = "0" return res