We have a fairly complex docker based infrastructure that we current manage using maestro-ng. Broadly speaking there are two types of container that we care about. A pile of stateless micro-services, and a few heavy stateful databases (Redis, Cassandra and Elasticsearch specifically.)
Maestro doesn’t do any scheduling, so it’s trivial to “pin” a Cassandra instance to a specific node to take advantage of a data volume.
I think I can see how to do this using Rancher, but I’m a little stuck with upgrades.
If I upgrade the Cassandra docker image using maestro, I can do a rolling restart where each individual Cassandra container is stopped, pulled and then started in sequence.
How can I achieve this in Rancher? From my reading, it looks like upgrading a service means that a new container is spun up and then the old container is stopped. So for a brief period of time both old and new are running. How does this work with data volumes?