I am experimenting to do a canary release of a service in Openshift. I understand and know how to canary a service
if it is registered to a route
. But there are situations that we often end up not registering every service with a route
. Is there an option to canary a service in OpenShift
without a route? Has anyone done it successfully?
P.S: I am looking for a canarying capability that is provided by Istio
but unfortunately I cannot use it right now.
There are essentially two main ways that can be taken to achieve canaries without routes.
First would be to simply add new pods behind the same service. As services are essentially round-robin load-balancers, the amount of pods defines the ratio of how many requests will lend on the old deployment or on the canary deployment.
Second way is to deploy some reverse proxy like haproxy or nginx and use it to split the traffic, which is similar to using istio in the sense that you introduce new SW component into your cluster to achieve the goal.