-
Notifications
You must be signed in to change notification settings - Fork 867
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
feat: Implement OpenShift Routes as a Traffic Manager #1301
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Awesome work to expand the scope of Argo-rollouts.
cd87358
to
5eb8bba
Compare
Codecov ReportBase: 81.69% // Head: 81.73% // Increases project coverage by
Additional details and impacted files@@ Coverage Diff @@
## master #1301 +/- ##
==========================================
+ Coverage 81.69% 81.73% +0.03%
==========================================
Files 126 127 +1
Lines 19136 19298 +162
==========================================
+ Hits 15634 15774 +140
- Misses 2709 2727 +18
- Partials 793 797 +4
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here. ☔ View full report at Codecov. |
Kudos, SonarCloud Quality Gate passed! |
@huikang : outside of getting this pull request to pass all status checks, can you confirm whether this feature is something that would be accepted into the argo-rollouts project? I know Red Hat has adopted Argo CD as their preferred GitOps solution, so I can imagine that the Argo Project is going to see an influx of OpenShift users. |
Hi, @andyfeller , thanks for reaching out. Yeah, definitely OpenShift Routes is an option in argo-rollouts and shall be included in the next v1.0.x release. Sorry about the delayed review process due to some other work having to finish. I will take another pass on the PR soon. |
Kudos, SonarCloud Quality Gate passed! |
Hello there ! |
The feature works but is failing the E2E tests, perhaps if those are fixed it can be merged, although running the controller on a personal cluster shows that you are able to have rollouts without problems. |
@jessesuen or @huikang Do we have a clear understanding of what prevents the E2E tests from passing? We can't see the logs anymore. Could one rerun them to identify what needs to be fixed / improved ? |
Hi @mbhatip , I am from Red Hat and looking forward for getting this change into the controller. Can you please rebase the PR and push the rebase changes ? This will also re-run the E2E tests. If you are busy with something else, Please let me know. I can help you in rebasing the PR and getting the E2E tests passed. P.S: If you want me to rebase the PR, please grant me the permissions on your branch :) |
Apologies, I don't have as much time to dedicate to the project Added the folks here as collaborators to the fork |
No worries, Thanks @mbhatip . I will take this forward from here. |
@iam-veeramalla Keep me updated if I can help you with anything here! I can help you with anything that is not coding in go ;-) |
Thanks, I have rebased the changes and fixed conflicts. Some unit tests are failing. Looking into it. |
e0df1a9
to
4ff5d42
Compare
Kudos, SonarCloud Quality Gate passed! |
Thanks for this! A couple of thoughts. (as pointed out in the PR documentation). OpenShift routes have "stickyness" and "cookies" turned on by default. Which makes seeing the canary on a browser difficult. You need to annotate the route with the following
See the official doc for other configurations that can be done. Would it make sense to have the Rollouts controller annotate the route for you during a canary rollout? |
Hi, This would be a very useful addition to Argo Rollouts! Are you still working on it @iam-veeramalla? If not I would be happy to take over if you would help me in identifying exactly what is missing. Let me know if you want me to help out. Regarding the stickiness as commented by @christianh814 I believe there are use cases where it makes sense to have stickyness turned on. A typical example would be a web application where you want to have the assets (JS/CSS/images) that are referenced from a HTML document to be available. That being said there are definitely also use cases where you'd want to have the stickyness turned off. My suggestion would be to keep it simple and update the documentation with instructions on how to disable stickyness if you want to do that. My assumption is that if stickyness is not important to you during rollout it would not be important to you once you've completed the rollout. The benefit would be to be aligned with OpenShift defaults and not add extra complexity or magic to Argo Rollouts. What do you think @christianh814 ? |
Fixed commits to make DCO pass. All checks are green now 👍 |
Do you need any help on testing this on OpenShift ? |
That would be great. Looks like it's been a while since it was manually tested by @mbhatip. |
@@ -0,0 +1,61 @@ | |||
# Openshift Routes | |||
|
|||
[Openshift Routes](https://docs.openshift.com/container-platform/4.7/networking/routes/route-configuration.html) allow services to be exposed through externally-reachable hostnames. Openshift routes have additional functionality with traffic splitting between different services, allowing Argo Rollouts to shift traffic between different versions during a Canary deployment. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
better use latest version of the docs
https://docs.openshift.com/container-platform/4.11/networking/routes/route-configuration.html
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks 👍
@@ -0,0 +1,169 @@ | |||
# Getting Started - OpenShift Routing | |||
|
|||
This guide covers how Argo Rollouts integrates with [OpenShift Routing](https://docs.openshift.com/container-platform/4.7/networking/routes/route-configuration.html) for traffic management. This guide builds upon the [getting started guide](../../getting-started.md). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
better use latest version of the docs
https://docs.openshift.com/container-platform/4.11/networking/routes/route-configuration.html
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks 👍
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
some changes requires to docs
Testing it locally |
Signed-off-by: kimfiedler <[email protected]>
Updated links in documentation and resolved merge conflicts |
Signed-off-by: kimfiedler <[email protected]>
Signed-off-by: kimfiedler <[email protected]>
Kudos, SonarCloud Quality Gate passed! |
I've done a test locally using OpenShift 4.11 on CRC and everything looks good! |
This is great to see I am hoping this become one of rollouts first plugins for traffic routers? The conversion process to a plugin should not be to difficult and am willing to help and let it shape any changes needed to the plugin system. I should be able to wrap up the plugin system here really soon next few days. https://cloud-native.slack.com/archives/C020XM04CUW/p1675065984845389 |
I had a talk with @zachaller and I will be porting the OpenShift Traffic Manager into the new plugin together with him. This PR will be superseeded by a plugin when #2548 lands. This means we will get the same capabilities as this PR give us but in a slightly more flexible architecture. |
Could someone help me understand what is remaining on this? I see 2548 was closed, not merged. Is help needed? |
@michael-mulder |
Addressing #1258
Checklist:
"fix(controller): Updates such and such. Fixes #1234"
.