rollouts-plugin-trafficrouter-gatewayapi icon indicating copy to clipboard operation
rollouts-plugin-trafficrouter-gatewayapi copied to clipboard

Issue Integrating Kong with Argo Rollout

Open ksgnextuple opened this issue 1 year ago • 5 comments

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

ksgnextuple avatar Mar 06 '24 17:03 ksgnextuple

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.

kostis-codefresh avatar Mar 07 '24 09:03 kostis-codefresh

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

  • Kong Ingress Controller image - 3.1.1
  • Kong Gateway image - 3.6.1.1
  • Kong Helm Chart - 2.38.0
  • Argo Rollouts image - v1.6.6
  • Argo Rollouts Gateway API plugin - v0.2.0
  • Argo Rollouts chart - 2.34.3

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:

  • Configuring spec.strategy.blueGreen.previewMetadata.labels with labels that I only want to be on the preview Pods.
  • Explicitly configuring the preview service with the selectors to match those labels.
  • Omitting spec.strategy.blueGreen.previewService in my Rollout manifest. I had to do this or Argo Rollouts complains that it can't match the preview service.

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?

congiv avatar Mar 19 '24 20:03 congiv

@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/

kostis-codefresh avatar Mar 20 '24 05:03 kostis-codefresh

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.

pmalek avatar Apr 24 '24 11:04 pmalek

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

Philipp-Plotnikov avatar Apr 25 '24 19:04 Philipp-Plotnikov