bookingcom / shipper

Kubernetes native multi-cluster canary or blue-green rollouts using Helm
Apache License 2.0
733 stars 38 forks source link

Target strategy steps to groups of clusters ('vertical' rollout progression) #252

Open kanatohodets opened 4 years ago

kanatohodets commented 4 years ago

(this is not a new issue, just creating a place to write down some of the discussions we've had)

Related to #244: whatever evolution of the API we implement for #244 should have this issue in mind.

Currently, Shipper exposes new releases on a 'horizontal' basis: a change in capacity or traffic applies all at once across all the clusters selected for the Release.

However, availability zone- or region-based rollout strategies give the user better control over the blast radius.

Here are some examples of rollout issues that Shipper is not currently well suited to protect against:

Ideally, Shipper should extend the strategy language such that it allows users to specify groups of clusters for each step. This has some tricky things to figure out, though. For example, one thing I've never had a clear idea about: if step 0 and step 1 have totally disjoint cluster selections, does that mean that advancing from 0 to 1 resets the clusters from step 0 to baseline?

osdrv commented 4 years ago

if step 0 and step 1 have totally disjoint cluster selections, does that mean that advancing from 0 to 1 resets the clusters from step 0 to baseline?

The semantics of a rollout strategy dictates progression when moving from a lower step upwards. Therefore, I'd prefer to see the strategy declaration progressively extending the cluster selection set. The DSL could be explicit about the extension intent, using lexems like: extendTo: [clusterA, clusterB].