Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add option to ensure High Availability for TrafficRouted canary #1738

Closed
ssanders1449 opened this issue Jan 2, 2022 · 3 comments
Closed
Labels
answered enhancement New feature or request

Comments

@ssanders1449
Copy link
Contributor

ssanders1449 commented Jan 2, 2022

Summary

When using TrafficRouted canary strategy, you can often end up with only a single pod for a replicaset. For example, if you have 10 pods with <= 10% canary, the canary replicaset will only have a single pod. If the node that the pod is running on is ever drained (e.g. by the cluster-autoscaler doing a scale-down), there would be an interruption of service

What change needs making?
Adding a parameter to the TrafficRouted canary strategy specifying the minimum number of pod per ReplicaSet to use - even if the percentage calculation would otherwise require fewer pods (assuming the desired number of pods in this ReplicaSet is not zero). Using this in conjunction with Pod Disruption Budgets, can assure that there will be no outages

When would you use this?
Whenever you are using Traffic routed canary, but also require high availability.

See https://github.com/ssanders1449/argo-rollouts/pull/1/files for a proposed implementation

Message from the maintainers:

Impacted by this bug? Give it a 👍. We prioritize the issues with the most 👍.

@ssanders1449 ssanders1449 added the enhancement New feature or request label Jan 2, 2022
@harikrongali
Copy link
Contributor

@ssanders1449 Rollout has a feature setCanaryScale that can be used to achieve what you are looking for.
https://argoproj.github.io/argo-rollouts/features/specification/

      # set canary scale to a explicit count without changing traffic weight
      # (supported only with trafficRouting)
      - setCanaryScale:
          replicas: 3

      # set canary scale to a percentage of spec.replicas without changing traffic weight
      # (supported only with trafficRouting)
      - setCanaryScale:
          weight: 25

@jessesuen
Copy link
Member

setCanaryScale was built for this purpose. We need to avoid adding feature complexity to the current calculations for canary vs. stable replica counts so don't think we should introduce a new feature that setCanaryScale should already be able to address.

@ssanders1449
Copy link
Contributor Author

I agree that this should be addressed by setCanaryScale, but please see #1779 where I show that we need to add a 'minReplicas' property to setCanaryScale

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
answered enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants