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

Enhancement Proposal: Multiple ALB Ingress Support for Canary Traffic Management #2471

Closed
n888 opened this issue Dec 12, 2022 · 1 comment
Closed
Labels
enhancement New feature or request
Milestone

Comments

@n888
Copy link
Contributor

n888 commented Dec 12, 2022

Enhancement Proposal: Multiple ALB Ingress Support for Canary Traffic Management

Enable defining multiple AWS ALB Ingress objects within a single Rollout object, with all Ingresses progressing in unison for each canary step.

Related: #710

Summary

ArgoRollouts currently supports managing a single ALB Ingress object per Rollout object. This limitation poses a problem when a single Application is served using multiple ALB Ingress objects.

For example: Ingresses for an Internal and External network, when there are various EC2 / AWS Services that need to reach a service inside an EKS cluster.

Workarounds

An example workaround is to create multiple Rollout objects in an Application, one for each ALB Ingress object. This option puts the onus on the operator to ensure all of the Rollout objects are progressing/resumed together in the correct order, increasing the chance of human error.

This workaround also unnecessarily increases the overall Application Pod count by at least 1, since each additional Rollout creates a separate replicaset.

Another workaround is potentially using AnalysisTemplates to trigger child rollout objects, but this seems a bit too clunky.

Example Multi-ALB Patch

master...n888:argo-rollouts:master

The limitation was a deal-breaker for some of our internal organizations, and we have created a Multi-ALB patch to bridge the gap for now and to re-spark the idea to the community, which we have been running in production workloads for the past three months.

The logic is heavily modeled after the Multiple Nginx Ingress patch by @tperdue321 (Thank you!) rallyhealth#1

Components Modified

  • Traffic Routing: Updates ALB data type to include a list of additionalIngresses
  • SetWeight: SetWeight is now a stub function that calls SetWeightPerIngress which processes the additionalIngresses followed by the ingress
    • Returns errors encountered during any of the ingress weight modifications
  • VerifyWeight: VerifyWeight is now a stub function that calls VerifyWeightPerIngress which processes the additionalIngresses followed by the ingress
    • Returns errors encountered during any of the ingress weight verifications
  • Validators: Validates all available ingresses
  • Rollout CRD: Updated to include trafficRouting.alb.additionalIngresses field

Message from the maintainers:

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

@n888 n888 added the enhancement New feature or request label Dec 12, 2022
@zachaller zachaller added this to the v1.5 milestone Dec 19, 2022
@zachaller zachaller modified the milestones: v1.5, v1.6 May 22, 2023
@n888
Copy link
Contributor Author

n888 commented Jul 19, 2023

Resolved via #2639

@n888 n888 closed this as completed Jul 19, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants