flagger icon indicating copy to clipboard operation
flagger copied to clipboard

Canary analysis restart again and again when using Gateway API

Open mingjie-li opened this issue 1 year ago • 1 comments

Describe the bug

When iterating over a map in Go, the order of elements is not guaranteed and may vary between iterations. In the context of the Gateway API provider, the four following maps:

canary.Spec.Service.Headers.Request.Add
canary.Spec.Service.Headers.Request.Set
canary.Spec.Service.Headers.Response.Add
canary.Spec.Service.Headers.Response.Set

are transformed into four slices, where the order becomes significant when comparing using go-cmp.

If sessionAffinity or Mirror is used, the comparison of these slices will be ignored. However, in other cases, any differences in the slices will lead the Flagger operator to believe that the HttpRoute has changed, triggering unnecessary canary analysis restarts."

To Reproduce

run canary analysis with gateway api without sessionAffinity or Mirror

Expected behavior

canary analysis run only once

Additional context

  • Flagger version: 1.38.0
  • Kubernetes version: 1.30
  • Service Mesh provider:
  • Ingress provider: GCP Gateway API

mingjie-li avatar Oct 18 '24 17:10 mingjie-li

PR here -> https://github.com/fluxcd/flagger/pull/1713

mingjie-li avatar Oct 18 '24 20:10 mingjie-li