diff --git a/pkg/router/istio.go b/pkg/router/istio.go index 75b3701a7..0a8e65739 100644 --- a/pkg/router/istio.go +++ b/pkg/router/istio.go @@ -21,6 +21,7 @@ import ( "encoding/json" "fmt" "math/rand" + "reflect" "strings" "time" @@ -297,6 +298,14 @@ func (ir *IstioRouter) reconcileVirtualService(canary *flaggerv1.Canary) error { // delegate VirtualService requires the hosts and gateway empty. virtualService.Spec.Gateways = []string{} virtualService.Spec.Hosts = []string{} + if !reflect.DeepEqual(newSpec, istiov1beta1.VirtualServiceSpec{}) { + _, err = ir.istioClient.NetworkingV1beta1().VirtualServices(canary.Namespace).Update(context.TODO(), virtualService, metav1.UpdateOptions{}) + if err != nil { + return fmt.Errorf("VirtualService %s.%s update error: %w", apexName, canary.Namespace, err) + } + ir.logger.With("canary", fmt.Sprintf("%s.%s", canary.Name, canary.Namespace)). + Infof("VirtualService %s.%s updated", virtualService.GetName(), canary.Namespace) + } } ignoreCmpOptions := []cmp.Option{