argo-rollouts icon indicating copy to clipboard operation
argo-rollouts copied to clipboard

Traffic management for kong ingress controller and kuma

Open vivekanandg opened this issue 4 years ago • 6 comments

Summary

Currently I see that only the below are supported

  • Istio
  • Nginx Ingress Controller
  • AWS ALB Ingress Controller
  • Service Mesh Interface (SMI)

Message from the maintainers:

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

vivekanandg avatar Oct 15 '20 06:10 vivekanandg

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

kostis-codefresh avatar Sep 08 '21 10:09 kostis-codefresh

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 avatar Feb 24 '22 08:02 borkke

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

mykyta-batalov avatar Mar 15 '22 13:03 mykyta-batalov

Here are few notes what I did:

  • Used minikube
  • Enabled nginx ingress using minikube minikube addons enable ingress
  • Checked out rollouts-demo
  • Added all URLs to my host file (canary.dev.argoproj.io, canary-preview.dev.argoproj.io, blue-green-preview.dev.argoproj.io, blue-green.dev.argoproj.io) to point to my minikube instance
  • tried these two examples blue/green and canary

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 avatar Mar 17 '22 20:03 borkke

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

borkke avatar Apr 13 '22 12:04 borkke

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

PhilippPlotnikov avatar May 26 '22 12:05 PhilippPlotnikov

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

github-actions[bot] avatar Dec 07 '22 02:12 github-actions[bot]

any news?

lucasoarruda avatar Jan 17 '23 01:01 lucasoarruda

The first version of the Gateway API plugin is out

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

kostis-codefresh avatar Mar 17 '23 13:03 kostis-codefresh

@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

kostis-codefresh avatar Jun 02 '23 08:06 kostis-codefresh