| Product/Project | | | | | | Ingress Nginx | Kong | Apache APISIX | Azure App Gateway Ingress | Nginx+ | HAProxy Tech | HAProxy (jcmoraisjr) | Voyager | Istio Ingress | Contour |
|---|
1. General info
| Based on | | | | | nginx | nginx | nginx | nginx + Azure App Gateway | nginx | haproxy | haproxy | haproxy | envoy | envoy | envoy |
|---|
| Documentation | | | | | https://kubernetes.github.io/ingress-nginx/ | https://docs.konghq.com/kubernetes-ingress-controller/latest/ | https://github.com/apache/apisix-ingress-controller/blob/master/README.md | https://azure.github.io/application-gateway-kubernetes-ingress/ | https://docs.nginx.com/nginx-ingress-controller/ | https://github.com/haproxytech/kubernetes-ingress | https://haproxy-ingress.github.io/docs/ | https://voyagermesh.com/docs/v12.0.0/welcome/ | https://istio.io/latest/docs/ | https://projectcontour.io/docs/main/ | https://www.getambassador.io/products/api-gateway/ |
|---|
| HTTP/HTTPS | | | | | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
|---|
| HTTP2 | | Comparison of Kubernetes Ingress controllers | | | ✔️ | ✔️ | ✔️ | Partial | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
|---|
| HTTP3 (QUIC) | | | | | Preview | ✖︎ | ✖︎ | ✖︎ | Preview | ✖︎ | ✖︎ | ✖︎ | Preview | ✖︎ | ✔️ |
|---|
| gRPC | | | | | ✔️ | ✔️ | ✔️ | ✖︎ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
|---|
| TCP | | | | | Partial | ✔️ | ✔️ | ✖︎ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
|---|
| TCP+TLS | | | | | ✖︎ | ✔️ | ✔️ | ✖︎ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
|---|
| UDP | | | | | Partial | ✔️ | ✔️ | ✖︎ | ✔️ | ✖︎ | ✖︎ | ✖︎ | ✖︎ | ✖︎ | ✖︎ |
|---|
| Websockets | | | | | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
|---|
| Proxy Protocol | | | | | ✔️ | ✔️ | ✔️ | Needs help | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
|---|
| 3. Clients | | | Leave a comment or drop us a line at research@learnk8s.io |
|---|
| Rate limiting (L4) | | | | | ✔️ | ✔️ | Needs help | Partial | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✖︎ | ✔️ |
|---|
| Rate limiting (L7) | | | | | ✔️ | ✔️ | ✔️ | Partial | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
|---|
| WAF | | License: | | | ✔️ | ✔️ | Partial | ✔️ | ✔️ | ✔️ | ✔️ | ✖︎ | ✖︎ | ✖︎ | ✔️ |
|---|
| Timeouts | | Apache 2.0 | | | ✔️ | ✔️ | ✔️ | ✖︎ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
|---|
| Safe-list/Block-list | | Last updated: | | | ✔️ | ✔️ | ✔️ | ✖︎ | ✔️ | ✔️ | ✔️ | Partial | ✔️ | ✖︎ | ✔️ |
|---|
| Authentication | | August 21, 2023 | | | ✔️ | ✔️ | ✔️ | ✖︎ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
|---|
| Authorisation | | | | | ✖︎ | ✔️ | ✔️ | ✖︎ | ✔️ | ✔️ | Partial | ✖︎ | ✔️ | ✔️ | ✔️ |
|---|
| 4. Traffic routing | | | Find more research at: |
|---|
| Host | | https://learnk8s.io/research | | | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
|---|
| Path | | | | | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
|---|
| Headers | | ✔️ | Supported in Free version | | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✖︎ | ✔️ | ✔️ | ✔️ |
|---|
| Querystring | | ✔️ | Supported in Enterprise version | | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✖︎ | ✔️ | ✖︎ | ✔️ |
|---|
| Method | | ✖︎ | Not supported | | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✖︎ | ✔️ | ✔️ | ✔️ |
|---|
| ClientIP | | Partial | Partially supported | | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✖︎ | ✔️ | ✖︎ | ✔️ |
|---|
| Notes | | Needs help | Not sure if it is supported |
|---|
| Notes | Notes | Notes | Notes | Notes | Notes | Notes | Notes | Notes | Notes | Notes | Notes | Notes | Notes | Notes | Notes |
|---|
5. Upstream probes/resiliency
| Healthchecks | | | | | ✖︎ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
|---|
| Retries | | | | | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✖︎ | ✔️ | ✔️ | ✔️ |
|---|
| Circuit Breaker | | | | | ✖︎ | ✔️ | ✔️ | ✖︎ | ✔️ | ✔️ | ✖︎ | ✖︎ | ✔️ | ✖︎ | ✔️ |
|---|
6.Load balancer strategies
| Round robin | | | | | ✔️ | ✔️ | ✔️ | ✖︎ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
|---|
| Sticky sessions | | | | | ✔️ | ✔️ | ✔️ | ✖︎ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
|---|
| Least connections | | | | | ✖︎ | ✔️ | ✔️ | ✖︎ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
|---|
| Ring hash | | | | | ✔️ | ✔️ | ✔️ | ✖︎ | ✔️ | ✖︎ | ✖︎ | ✖︎ | ✔️ | ✔️ | ✔️ |
|---|
| Maglev | | | | | ✖︎ | ✖︎ | ✖︎ | ✖︎ | ✖︎ | ✖︎ | ✖︎ | ✖︎ | ✔️ | ✖︎ | ✔️ |
|---|
| Exponential-Weighted-Moving-Average | | | | | ✔️ | ✖︎ | ✔️ | ✖︎ | ✖︎ | ✖︎ | ✖︎ | ✖︎ | ✖︎ | ✖︎ | ✖︎ |
|---|
| Custom load balancing | | | | | ✖︎ | ✖︎ | ✔️ | ✖︎ | Partial | ✖︎ | ✖︎ | ✖︎ | ✖︎ | ✖︎ | ✖︎ |
|---|
| Power of two random choices | | | | | Needs help | Needs help | Needs help | Needs help | ✔️ | ✖︎ | ✖︎ | Needs help | Needs help | Needs help | Needs help |
|---|
| Global load balancing | | | | | Needs help | Needs help | ✔️ | Needs help | ✔️ | ✖︎ | Needs help | Needs help | Needs help | Needs help | Needs help |
|---|
| External load balancing | | | | | Needs help | Needs help | Needs help | Needs help | ✔️ | ✔️ | Needs help | Needs help | Needs help | Needs help | Needs help |
|---|
Notes
| Notes | Notes | Notes | Notes | Notes | Notes | Notes | Notes | Notes | Notes | Notes | Notes | Notes | Notes | Notes | Notes |
|---|
7. Authentication
| Basic auth | | | | | ✔️ | ✔️ | ✔️ | ✖︎ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
|---|
| External Auth | | | | | ✔️ | ✔️ | ✔️ | ✖︎ | ✔️ | ✖︎ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
|---|
| Client certificate - mTLS | | | | | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
|---|
| OAuth | | | | | ✔️ | ✔️ | ✔️ | ✖︎ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✖︎ | ✔️ |
|---|
| OpenID | | | | | ✖︎ | ✔️ | ✔️ | ✖︎ | ✔️ | ✔️ | ✖︎ | ✖︎ | ✔️ | ✖︎ | ✔️ |
|---|
| JWT | | | | | ✖︎ | ✔️ | ✔️ | ✖︎ | ✔️ | ✖︎ | ✖︎ | ✖︎ | ✔️ | ✖︎ | ✔️ |
|---|
| LDAP | | | | | ✖︎ | ✔️ | ✔️ | ✖︎ | ✔️ | ✖︎ | ✖︎ | ✖︎ | ✖︎ | ✖︎ | ✖︎ |
|---|
| HMAC | | | | | ✖︎ | ✔️ | ✔️ | ✖︎ | ✔️ | ✖︎ | ✖︎ | ✖︎ | ✖︎ | ✖︎ | ✖︎ |
|---|
| SAML | | | | | Needs help | ✔️ | ✔️ | Needs help | ✔️ | ✖︎ | Needs help | Needs help | Needs help | Needs help | Needs help |
|---|
8. Observability
| Logging | | | | | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
|---|
| Metrics | | | | | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
|---|
| Tracing | | | | | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✖︎ | Needs help | ✔️ | ✔️ | ✔️ |
|---|
9. Kubernetes Integration
| CRD | | | | | ✖︎ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✖︎ | ✔️ | ✔️ | ✔️ | ✔️ |
|---|
| Scope | | | | | Clusterwide and namespace | Clusterwide and namespace | namespace | Clusterwide and namespace | Clusterwide and namespace | Clusterwide and namespace | Clusterwide and namespace | Clusterwide and namespace | Clusterwide and namespace | Clusterwide and namespace | Clusterwide and namespace |
|---|
| Support for the Gateway API (Ingress v2) current v1alpha2 | | | | | ✖︎ | ✔️ | Preview | ✖︎ | Preview | Preview | ✔️ | Needs help | Preview | ✔️ | Preview |
|---|
| Integrates with service meshes | | | | | ✔️ | ✔️ | ✔️ | ✖︎ | ✔️ | ✔️ | ✔️ | Needs help | ✔️ | ✖︎ | ���️ |
|---|
10. Traffic shaping
| Canary | | | | | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
|---|
| Session Affinity | | | | | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
|---|
| Traffic Mirroring | | | | | ✔️ | Needs help | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✖︎ | ✔️ | ✔️ | ✔️ |
|---|
11. Interface
| Dashboard | | | | | ✖︎ | ✔️ | ✔️ | ✔️ | ✔️ | ✖︎ | ✖︎ | ✖︎ | ✔️ | ✖︎ | ✔️ |
|---|
| Billing and reporting | | | | | ✖︎ | ✔️ | ✔️ | ✔️ | ✖︎ | ✔️ | ✖︎ | ✖︎ | ✖︎ | ✖︎ | ✔️ |
|---|
| Developer portal | | | | | ✖︎ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✖︎ | ✖︎ | ✔️ | ✖︎ | ✔️ |
|---|
12. Other
| Hot reloading | | | | | ✔️ | ✔️ | ✔️ | Needs help | ✔️ | ✔️ | ✔️ | Needs help | ✔️ | ✔️ | ✔️ |
|---|
| LetsEncrypt Integration | | | | | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
|---|
| Transparent update of certificates | | | | | Needs help | Needs help | ✔️ | Needs help | Needs help | ✔️ | Needs help | Needs help | Needs help | Needs help | Needs help |
|---|
| Wildcard certificate support | | | | | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | Needs help | Needs help | Needs help | Needs help | ✔️ |
|---|
| State sharing | | | | | Needs help | Needs help | Needs help | Needs help | ✔️ | ✔️ | Needs help | Needs help | Needs help | Needs help | Needs help |
|---|
Discussion 0
No discussion yet. Start it — no sign-up needed.