argoproj-labs / rollouts-plugin-trafficrouter-gatewayapi

The Argo Rollouts plugin implementing the Kubernetes Gateway API specification for using different traffic providers in progressive delivery scenarios
https://rollouts-plugin-trafficrouter-gatewayapi.readthedocs.io/en/latest/
Apache License 2.0
94 stars 19 forks source link

Issue Integrating Kong with Argo Rollout #51

Closed ksgnextuple closed 2 months ago

ksgnextuple commented 7 months ago

Hi Team

Faced one issue when integrating KIC with Argo Rollouts. This seems to be an issue with KIC, I did raise a ticket there too but wanted to check if this issue was come across when trying the demo with Kong

2024-03-06T17:09:44Z error Failed parsing resource errors {"url": "https://localhost:8444", "update_strategy": "InMemory", "error": "could not unmarshal config error: json: cannot unmarshal object into Go struct field ConfigError.flattened_errors of type []sendconfig.FlatEntityError"}

Got this error when httproute and rollout was configured.

KIC Issue for reference -> https://github.com/Kong/kubernetes-ingress-controller/issues/5676

kostis-codefresh commented 7 months ago

Where is this log coming from? The Argo Rollouts controller? Or Kong?

If it happens when you just create an HTTProute, I don't think Argo Rollouts is involved.

congiv commented 6 months ago

I'm also seeing this same issue. Here's the versions I've been using for reference:

Where is this log coming from? The Argo Rollouts controller? Or Kong?

This is a log from Kong Ingress Controller. KIC looks to be unable to reconcile the HTTPRoute when there are multiple backendRefs that resolve to the same Pods. Given the example for kong in this repo where the argo-rollouts-canary-service and argo-rollouts-stable-service Services have identical specs, it seems like this conflict will exist when there's not an active deployment and the Pods that exist don't yet have the labels injected by the Rollout controller.

I've gotten around this limitation for a BlueGreen deployment by:

For canary however, It looks like I can't do the equivalent by omitting spec.strategy.canary.canaryService as that's called out as required for traffic routing in the docs.

As far as I can tell it seems like the kong examples in this repo may be out of date? Step 0 starts with Gateway API from before the v1 release, and it's not called out which version of Kong this was working with. Maybe the KIC functionality has changed since this was written?

kostis-codefresh commented 6 months ago

@congiv Yes I created the example 10 months ago (as can be seen from the Git history)

But I am in no way a Kong expert, just a simple user. I just followed the Gateway API instructions that Kong had at that time.

The version I used seems to be 2.9.x https://docs.konghq.com/kubernetes-ingress-controller/2.9.x/deployment/install-gateway-apis/

pmalek commented 5 months ago

This should be improved (or fixed entirely) with next KIC release with this https://github.com/Kong/kubernetes-ingress-controller/pull/5817.

There's also been some improvements with regards to errors handling so you should be able to see more verbose and meaningful errors when that happens in newer versions.

Also the nightlies already include https://github.com/Kong/kubernetes-ingress-controller/pull/5773 which gives you access to raw Kong errors returned when KIC applies the configuration which fails and then error parsing fails.

Philipp-Plotnikov commented 5 months ago

Hi @ksgnextuple as I understood the problem was solved right ? May we close this issue ?