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

feat: configurable HTTP route version #56

Closed
wants to merge 1 commit into from

Conversation

tommy351
Copy link
Contributor

Some Gateway API implementations do not support Gateway API v1 yet. (e.g. GKE) I added a new flag http-route-api-version for users to configure HTTP route version during plugin initialization. This feature requires argoproj/argo-rollouts#2992 which is introduced in Argo Rollouts v1.7.0-rc1.

trafficRouterPlugins:
  name: argoproj-labs/gatewayAPI
  location: https://github.com/argoproj-labs/rollouts-plugin-trafficrouter-gatewayapi/releases/download/v0.2.0/gateway-api-plugin-linux-amd64
  args:
    - "--http-route-api-version"
    - v1beta1

@Philipp-Plotnikov
Copy link
Collaborator

Philipp-Plotnikov commented Apr 29, 2024

@tommy351 did you find examples when v1 doesnt work correctly with versions that are less than v1 ?
I tried it with several traffic providers with beta versions and it worked well.
If you found so example, can you share it with us, please ?

@Philipp-Plotnikov Philipp-Plotnikov changed the title Configurable HTTP route version feat: configurable HTTP route version Apr 29, 2024
@kostis-codefresh
Copy link
Collaborator

The problem with this Pr is that it instantly doubles the testing and maintenance effort as we will need to see what happens this both 1.0 and pre 1.0 releases

Also if this flag stays as a permanent feature we will need to create a compatibility table with versions of plugin vs versions of gateway api which in the long run might be too much

What I suggest is to have two releases of the plugin and let people downgrade if their provider doesn't support 1.0

After all this is supposed to be a temporary case. What do you think @tommy351 ?

@tommy351
Copy link
Contributor Author

GKE doesn't support v1 currently, and users can't install newer CRDs. I think having two releases is also fine for me.

@Philipp-Plotnikov
Copy link
Collaborator

Philipp-Plotnikov commented Apr 30, 2024

@tommy351 it doesn't mean that you can't use gateway api with v1, did you find traffic provider where you had a problem ? You can use versions less than v1 but use gateway api with v1, I tested and locally for me it worked, if you had problem, please share it with us

@tommy351
Copy link
Contributor Author

tommy351 commented Apr 30, 2024

The plugin prints this error without this fix. It's not because I didn't create a corresponding HTTPRoute resource. The plugin can't use v1 API because the corresponding version doesn't exist on the cluster at all.

time="2024-04-30T03:54:39Z" level=error msg="rollout syncHandler error: failed to set weight via plugin: the server could not find the requested resource (get httproutes.gate
way.networking.k8s.io test)" namespace=default rollout=test

@Philipp-Plotnikov
Copy link
Collaborator

The plugin prints this error without this fix. It's not because I didn't create a corresponding HTTPRoute resource. The plugin can't use v1 API because the corresponding version doesn't exist on the cluster at all.


time="2024-04-30T03:54:39Z" level=error msg="rollout syncHandler error: failed to set weight via plugin: the server could not find the requested resource (get httproutes.gate

way.networking.k8s.io test)" namespace=default rollout=test

I will be near the computer on the evening, but did you try to install CRD of gateway api of v1 and create HTTPRoute with beta version ? I remember I installed CRD of v1 and created beta HTTPRoute, but not sure I had in cluster CRD of beta version. (I can't now check it but I think I only had v1 gateway CRD, traffic provider that supports beta version and routes with beta versions and all was good)

@tommy351
Copy link
Contributor Author

tommy351 commented May 2, 2024

I just tried installing v1 CRDs on a GKE cluster. It's impossible to override the CRDs installed by GKE. When I executed the following command, it didn't fail but the CRDs didn't changed either.

kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.0.0/standard-install.yaml

@kostis-codefresh
Copy link
Collaborator

I think the gateway api is actually lead by Google. So it is really strange that they don't support it.

Do you have an account manager that you can contact and ask them about it?

I mean if they intend to support 1.0 real soon maybe we just need to wait?

@tommy351
Copy link
Contributor Author

tommy351 commented May 3, 2024

I just found that Google will update their CRDs on 1.29.3. It should be released a few months later.

https://cloud.google.com/kubernetes-engine/docs/how-to/gatewayclass-capabilities#architecture

@kostis-codefresh
Copy link
Collaborator

@tommy351 Do I understand correctly that Google now supports Gateway API 1.0 and this PR is no longer needed?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants