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

AWS ALB header based routing support #2086

Closed
joey100 opened this issue Jun 8, 2022 · 9 comments
Closed

AWS ALB header based routing support #2086

joey100 opened this issue Jun 8, 2022 · 9 comments
Labels
enhancement New feature or request no-issue-activity

Comments

@joey100
Copy link

joey100 commented Jun 8, 2022

Summary

We have scenarios that the ALB can route traffic to different target groups(canary/stable services) based on request headers. It seems ALB itself can do this, using ALB ingress annotation or modify the ALB listen rules on AWS console. However, I don't see that Argo Rollouts can support AWS ALB with this header based routing.
The rollout spec doc explains that rollout controller injects the alb.ingress.kubernetes.io/actions. annotation, containing a JSON payload understood by the AWS Load Balancer Controller, directing it to split traffic between the canaryService and stableService according to the current canary weight.
Looks like it's the only way of managing traffic with ALB.

Do you have any example of how the rollout spec should be like to support header based routing with ALB or it's not supported yet?

I understand rollout supports header based routing with Istio, but how about ALB?

rgo Rollouts has ability to send all traffic to the canary-service based on a http request header value. Right now it's implemented for the Istio only.

What change needs making?

Use Cases

We have scenarios that the ALB can route traffic to different target groups(canary/stable services) based on request headers.

When would you use this?
Now.


Message from the maintainers:

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

@joey100 joey100 added the enhancement New feature or request label Jun 8, 2022
@zachaller
Copy link
Collaborator

zachaller commented Jun 8, 2022

This feature is being worked on. #2061

@github-actions
Copy link
Contributor

This issue is stale because it has been open 60 days with no activity.

@github-actions
Copy link
Contributor

This issue is stale because it has been open 60 days with no activity.

@zachaller
Copy link
Collaborator

Completed and merged

@joey100
Copy link
Author

joey100 commented Jan 11, 2023

Hi @zachaller @perenesenko Thanks a lot for the ALB header based routing support, it works!

However, I see the current workflow is that we can make a specific subset of users(custom-header:xxx) access canary version all the time, and the others access stable version and canary version based on the ratio.

May I know if there is possibility that a specific subset of users access canary version all the time, and the others access stable version all the time?

P.S: all the time means during canary deployment, from canary step 1 to the last step.

@zachaller
Copy link
Collaborator

It sounds like you just want to not use any setWeight steps in your rollout?

@joey100
Copy link
Author

joey100 commented Jan 12, 2023

It sounds like you just want to not use any setWeight steps in your rollout?

Hi @zachaller Yes, but there is new question: how can I set the canary version pods? Because if we use setWeight steps at least the canary pod numbers will be adjusted accordingly.

@zachaller
Copy link
Collaborator

@felixrb86
Copy link

hi @joey100 , can you show me what did you do for the ALB header based routing using Argo Rollout and Istio?

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

No branches or pull requests

3 participants