fluxcd / flagger

Progressive delivery Kubernetes operator (Canary, A/B Testing and Blue/Green deployments)
https://docs.flagger.app
Apache License 2.0
4.89k stars 731 forks source link

Support for simultaneous TCP & HTTP Canary deployments in Istio #1612

Open Raven6681 opened 7 months ago

Raven6681 commented 7 months ago

Describe the feature

Currently (after implementing this: https://github.com/fluxcd/flagger/issues/1556), there are 2 options. Either use a HTTP port for the canary or a TCP port. Can't use both at the same time.

It would be great if flagger could support both at the same time (VirtualServices and DestinationRules in order to control traffic for both HTTP and TCP ports).

What problem are you trying to solve?

Create canaries for applications which expose 2 ports, one HTTP and one TCP.

LiZhenCheng9527 commented 7 months ago

Are you trying to publish using multiple ports? Perhaps you can refer to this document

Raven6681 commented 7 months ago

@LiZhenCheng9527 what you suggest (using portDiscovery: true) will include the discovered ports into the Service resources but it will not create a VirtualService with multiple ports (and protocols). Thus, The Canary will only handle the traffic of the one port defined in the spec.service What I need is, the ability to declare 2 ports in the service with different protocols (http and tcp) thus creating a VirtualService with both spec.http and spec.tcp which will route the traffic to the respective DestinationRules.

IrvinFan commented 1 week ago

Similar to https://github.com/fluxcd/flagger/issues/1087

We're having the same problem too.