argoproj / argo-rollouts

Progressive Delivery for Kubernetes
https://argo-rollouts.readthedocs.io/
Apache License 2.0
2.75k stars 865 forks source link

Traffic management for kong ingress controller and kuma #782

Closed vivekanandg closed 1 year ago

vivekanandg commented 4 years ago

Summary

Currently I see that only the below are supported


Message from the maintainers:

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

kostis-codefresh commented 3 years ago

It seems that Kong will have an implementation for the Kubernetes Gateway API https://gateway-api.sigs.k8s.io/implementations/#kong

So Kong support might be available after implementing #1438

borkke commented 2 years ago

I found out about this open issue only after we did the implementation where we have Kong as ingress controller (without Kuma) and our services are deployed with:

I was very surprised when I saw that Kong is not on the supported list but my setup works perfectly fine. So, I'm wondering am I missing something here?

I was even able to run canary and blue-green example first with Nginx being my ingress then I just switched to Kong ingress and it worked fine.

mykyta-batalov commented 2 years ago

I found out about this open issue only after we did the implementation where we have Kong as ingress controller (without Kuma) and our services are deployed with:

  • service
  • service-preview
  • ingress
  • ingress-preview
  • rollout (tested canary and blue-green)
  • and hpa

I was very surprised when I saw that Kong is not on the supported list but my setup works perfectly fine. So, I'm wondering am I missing something here?

I was even able to run canary and blue-green example first with Nginx being my ingress then I just switched to Kong ingress and it worked fine.

  • kong -> 2.7.0
  • rollouts -> 1.1.0

@borkke Do you mind sharing an example of how you got it all set up, please? I'm making research if this is a viable option as of today and it would help a lot to have something to look at. Thanks

borkke commented 2 years ago

Here are few notes what I did:

The examples worked fine. Then I uninstalled nginx ingress and installed Kong ingress and everything worked fine as before. This should be enough I think:

minikube addons disable ingress
helm install kong kong/kong --set proxy.type=NodePort

I tried canary example and it worked just fine. This is the only diff that I have locally:

diff --git a/examples/canary/canary-ingress.yaml b/examples/canary/canary-ingress.yaml
index 6a642e9..e1cad9d 100644
--- a/examples/canary/canary-ingress.yaml
+++ b/examples/canary/canary-ingress.yaml
@@ -4,8 +4,8 @@ metadata:
   name: canary-demo
   annotations:
     ingress.kubernetes.io/proxy-body-size: 100M
-    kubernetes.io/ingress.class: nginx
-    ingress.kubernetes.io/app-root: /
+    kubernetes.io/ingress.class: kong
+    konghq.com/strip-path: "true"
 spec:
   rules:
   - host: canary.dev.argoproj.io
diff --git a/examples/canary/canary-preview-ingress.yaml b/examples/canary/canary-preview-ingress.yaml
index 683e775..8ae25b5 100644
--- a/examples/canary/canary-preview-ingress.yaml
+++ b/examples/canary/canary-preview-ingress.yaml
@@ -4,8 +4,8 @@ metadata:
   name: canary-demo-preview
   annotations:
     ingress.kubernetes.io/proxy-body-size: 100M
-    kubernetes.io/ingress.class: nginx
-    ingress.kubernetes.io/app-root: /
+    kubernetes.io/ingress.class: kong
+    konghq.com/strip-path: "true"
 spec:
   rules:
   - host: canary-preview.dev.argoproj.i

I did have small issue and I think it's probably my local Kong configuration. The Location HTTP header was not picked up and I worked around this by using Header Editor and with that the example worked as expected.

Also, we currently have ArgoCD/Rollout/Kong on EKS with working canary and blue/green deployments.

borkke commented 2 years ago

@mykyta-batalov Just checking in... Did you have any progress regarding this?

PhilippPlotnikov commented 2 years ago

Hi, I have implemented Gateway API support. Can someone review it ? https://github.com/argoproj/argo-rollouts/pull/2004 It should solve the problem with Kong and Kuma

github-actions[bot] commented 1 year ago

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

lucasoarruda commented 1 year ago

any news?

kostis-codefresh commented 1 year ago

The first version of the Gateway API plugin is out

https://github.com/argoproj-labs/rollouts-gatewayapi-trafficrouter-plugin

kostis-codefresh commented 1 year ago

@lucasoarruda , @vivekanandg , @borkke , @mykyta-batalov

Full example with Kong via the Gateway API can be found here https://github.com/argoproj-labs/rollouts-plugin-trafficrouter-gatewayapi/tree/main/examples/kong

Any feedback welcome