I am getting started with Spring Cloud using Eureka and Zuul and had some questions around structuring blue/green and Canary deployments. So far, I have the basics worked out and have Eureka, Zuul, and a config server working as expected. What I am trying to accomplish is set up a service that has two versions, say 1.0 and a 1.1. For a subset of specific users, I want to route them to the 1.1 version and everyone else should go to the 1.0 version.
The Zuul filter API is a little light on documentation and I'm struggling a bit to grok some of the concepts, so I thought I'd ask a few questions here. I have also have some basic filters running, which don't do a whole lot a the moment other than getting the identity of the principal and the service they are requesting. Where I am hitting a wall is understanding how to expose two different versions of the same service to Eureka and Zuul. A few things I'm curious about:
- Between documentation, posts, and other stack overflow, the term "service" and "cluster" seem to be used interchangeably. Is this correct?
- With that said if I have a service named
/simpleservice
do I expose two different serviceIDs (i.e.simpleservice
andsimpleservice-1.1
)? And If I do that, when one of the targeted users requests/simpleservice
, I'm having Zuul send them to/simpleservice-1.1
- Or, do you add another node to the existing service ID and add additional metadata to each node so that Zuul and distinguish versions 1.0 and 1.1?
- Is the correct answer "all of the above?" :)