argo-rollouts
argo-rollouts copied to clipboard
Traffic management for kong ingress controller and kuma
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 👍.
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
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
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
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.
@mykyta-batalov Just checking in... Did you have any progress regarding this?
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
This issue is stale because it has been open 60 days with no activity.
any news?
The first version of the Gateway API plugin is out
https://github.com/argoproj-labs/rollouts-gatewayapi-trafficrouter-plugin
@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