0% found this document useful (0 votes)
142 views

Kubernetes Ingress Controllers

The document compares different Kubernetes ingress controllers. Ingress Nginx supports protocols including HTTP, HTTPS, HTTP2, gRPC, TCP, TLS, Websockets, and Proxy Protocol. It can perform traffic routing based on host, path, headers, and query string. It also supports rate limiting, timeouts, authentication, logging, metrics, and traffic shaping capabilities like canary releases.

Uploaded by

stam
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as ODS, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
142 views

Kubernetes Ingress Controllers

The document compares different Kubernetes ingress controllers. Ingress Nginx supports protocols including HTTP, HTTPS, HTTP2, gRPC, TCP, TLS, Websockets, and Proxy Protocol. It can perform traffic routing based on host, path, headers, and query string. It also supports rate limiting, timeouts, authentication, logging, metrics, and traffic shaping capabilities like canary releases.

Uploaded by

stam
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as ODS, PDF, TXT or read online on Scribd
You are on page 1/ 18

Product/Project Ingress Nginx

1. General info
Based on nginx

Documentation https://kubernetes.github.io/ingress-ng
2. Protocols
HTTP/HTTPS ✔️

HTTP2 ✔️

gRPC ✔️

TCP Comparison of Partial


✖︎
TCP+TLS Kubernetes
UDP Ingress Partial
Websockets controllers ✔️
Proxy Protocol
✔️
QUIC/HTTP3
Preview
Leave a comment or drop us a line at
3. Clients [email protected]
Rate limiting (L4) ✔️
Rate limiting (L7) ✔️
WAF
License: ✔️
Timeouts Apache 2.0 ✔️
Safe-list/Block-list Last updated: ✔️
Authentication October 2, 2022 ✔️
Authorisation ✖︎

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 ✔️
Needs help Not sure if it is supported
Notes
Notes
5. Upstream probes/resil
Healthchecks ✖︎
Retries ✔️
Circuit Breaker ✖︎
6.Load balancer strategi
Round robin ✔️
Sticky sessions ✔️
Least connections ✖︎
Ring hash ✔️
Maglev ✖︎
Exponential-Weighted-Moving-Average ✔️
Custom load balancing ✖︎
Power of two random choices Needs help
Global load balancing Needs help
External load balancing Needs help
Notes
Notes
7. Authentication
Basic auth ✔️
External Auth ✔️
Client certificate - mTLS ✔️
OAuth ✔️
OpenID ✖︎
JWT ✖︎
LDAP ✖︎
HMAC ✖︎
SAML Needs help
8. Observability
Logging ✔️
Metrics ✔️
Tracing ✔️
9. Kubernetes Integratio
CRD ✖︎
Clusterwide
Scope and
namespace
Support for the Gateway API (Ingress v2)
current v1alpha2
✖︎
Integrates with service meshes ✔️
10. Traffic shaping
Canary ✔️
Session Affinity ✔️
Traffic Mirroring ✔️
11. Interface
Dashboard ✖︎
Billing and reporting ✖︎
Developer portal ✖︎
12. Other
Hot reloading ✔️
LetsEncrypt Integration ✔️
Transparent update of certificates Needs help
Wildcard certificate support ✔️
State sharing Needs help
Kong Apache APISIXAzure App Gateway
Nginx+
Ingress HAProxy TechHAProxy (jcmoraisjr)

nginx + Azure
nginx nginx nginx haproxy haproxy
App Gateway
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-ingres
https://haproxy-ingress.github.io/d

✔️ ✔️ ✔️ ✔️ ✔️ ✔️

✔️ ✔️ Partial ✔️ ✔️ ✔️
✖︎
✔️ ✔️ ✔️ ✔️ ✔️
✖︎
✔️ ✔️ ✔️ ✔️ ✔️
✖︎
✔️ ✔️ ✔️ ✔️ ✔️
✖︎ ✖︎ ✖︎
✔️ ✔️ ✔️

✔️ ✔️ ✔️ ✔️ ✔️ ✔️

Needs help
✔️ ✔️ ✔️ ✔️ ✔️
✖︎ ✖︎ ✖︎ ✖︎
Preview Preview

✔️ Needs help Partial ✔️ ✔️ ✔️


✔️ ✔️ Partial ✔️ ✔️ ✔️

✔️ Partial ✔️ ✔️ ✔️ ✔️
✔️ ✔️ ✖︎ ✔️ ✔️ ✔️
✔️ ✔️ ✖︎ ✔️ ✔️ ✔️
✔️ ✔️ ✖︎ ✔️ ✔️ ✔️
✔️ ✔️ ✖︎ ✔️ ✔️ Partial

✔️ ✔️ ✔️ ✔️ ✔️ ✔️
✔️ ✔️ ✔️ ✔️ ✔️ ✔️
✔️ ✔️ ✔️ ✔️ ✔️ ✔️
✔️ ✔️ ✔️ ✔️ ✔️ ✔️
✔️ ✔️ ✔️ ✔️ ✔️ ✔️
✔️ ✔️ ✔️ ✔️ ✔️ ✔️

Notes Notes Notes Notes Notes Notes


✔️ ✔️ ✔️ ✔️ ✔️ ✔️
✔️ ✔️ ✔️ ✔️ ✔️ ✔️
✔️ ✔️ ✖︎ ✔️ ✔️ ✖︎

✔️ ✔️ ✖︎ ✔️ ✔️ ✔️
✔️ ✔️ ✖︎ ✔️ ✔️ ✔️
✔️ ✔️ ✖︎ ✔️ ✔️ ✔️
✔️ ✔️ ✖︎ ✔️ ✖︎ ✖︎
✖︎ ✖︎ ✖︎ ✖︎ ✖︎ ✖︎
✖︎ ✔️ ✖︎ ✖︎ ✖︎ ✖︎
✖︎ ✔️ ✖︎ Partial ✖︎ ✖︎
Needs help Needs help Needs help ✔️ ✖︎ ✖︎
Needs help ✔️ Needs help ✔️ ✖︎ Needs help
Needs help Needs help Needs help Needs help ✔️ Needs help

Notes Notes Notes Notes Notes Notes

✔️ ✔️ ✖︎ ✔️ ✔️ ✔️
✔️ ✔️ ✖︎ ✔️ ✖︎ ✖︎
✔️ ✔️ ✔️ ✔️ ✔️ ✔️
✔️ ✔️ ✖︎ ✔️ ✔️ ✔️
✔️ ✔️ ✖︎ ✔️ ✔️ ✖︎
✔️ ✔️ ✖︎ ✔️ ✖︎ ✖︎
✔️ ✔️ ✖︎ ✔️ ✖︎ ✖︎
✔️ ✔️ ✖︎ ✔️ ✖︎ ✖︎
✖︎ ✔️ Needs help Needs help ✖︎ Needs help

✔️ ✔️ ✔️ ✔️ ✔️ ✔️
✔️ ✔️ ✔️ ✔️ ✔️ ✔️
✔️ ✔️ ✔️ ✔️ ✔️ ✖︎

✔️ ✔️ ✔️ ✔️ ✔️ ✖︎
Clusterwide Clusterwide Clusterwide Clusterwide Clusterwide
and namespace and and and and
namespace namespace namespace namespace namespace
Preview Preview ✖︎ ✖︎ ✖︎ ✔️
✔️ ✔️ ✖︎ ✔️ ✔️ ✔️

✔️ ✔️ ✔️ ✔️ ✔️ ✔️
✔️ ✔️ ✔️ ✔️ ✔️ ✔️
Needs help ✔️ ✔️ ✔️ ✔️ ✔️

✔️ ✔️ ✔️ ✔️ ✖︎ ✖︎
✔️ ✔️ ✔️ ✖︎ ✔️ ✖︎
✔️ ✔️ ✔️ ✔️ ✔️ ✖︎

✔️ ✔️ Needs help ✔️ ✔️ ✔️
✔️ ✔️ ✔️ ✔️ ✔️ ✔️
Needs help ✔️ Needs help Needs help ✔️ Needs help
✔️ ✔️ ✔️ ✔️ ✔️ Needs help
Needs help Needs help Needs help ✔️ ✔️ Needs help
Voyager Istio Ingress Contour Emissary-ingress (ex
Gloo
Ambassador)
Traefik

haproxy envoy envoy envoy envoy traefik

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/
https://docs.solo.io/gloo-edge/latest/
https://doc.traefik.io/traefik/
reference
✔️ ✔️ ✔️ ✔️ ✔️ ✔️

✔️ ✔️ ✔️ ✔️ ✔️ ✔️

✔️ ✔️ ✔️ ✔️ ✔️ ✔️

✔️ ✔️ ✔️ ✔️ ✔️ ✔️

✔️ ✔️ ✔️ ✔️ ✔️ ✔️
✖︎ ✖︎ ✖︎ ✖︎ ✖︎
✔️

✔️ ✔️ ✔️ ✔️ ✔️ ✔️

✔️ ✔️ ✔️ ✔️ ✔️ ✔️
✖︎ ✖︎ ✖︎ ✖︎ ✖︎
Preview

✔️ ✔️ ✖︎ ✔️ ✔️ ✔️
✔️ ✔️ ✔️ ✔️ ✔️ ✔️
✖︎ ✖︎ ✖︎ ✖︎
✔️ ✔️
✔️ ✔️ ✔️ ✔️ ✔️ ✔️
Partial ✔️ ✖︎ ✔️ Needs help ✔️
✔️ ✔️ ✔️ ✔️ ✔️ ✔️
✖︎ ✔️ ✔️ ✔️ ✔️ ✔️

✔️ ✔️ ✔️ ✔️ ✔️ ✔️
✔️ ✔️ ✔️ ✔️ ✔️ ✔️
✖︎ ✔️ ✔️ ✔️ ✔️ ✔️
✖︎ ✔️ ✖︎ Partial ✔️ ✔️
✖︎ ✔️ ✔️ ✔️ ✔️ ✔️
✖︎ ✔️ ✖︎ ✔️ ✔️ ✔️

Notes Notes Notes Notes Notes Notes


✔️ ✔️ ✔️ ✔️ ✔️ ✔️
✖︎ ✔️ ✔️ ✔️ ✔️ ✔️
✖︎ ✔️ ✖︎ ✔️ ✔️ ✔️

✔️ ✔️ ✔️ ✔️ ✔️ ✔️
✔️ ✔️ ✔️ ✔️ ✔️ ✔️
✔️ ✔️ ✔️ ✔️ ✔️ ✖︎
✖︎ ✔️ ✔️ ✔️ ✔️ ✖︎
✖︎ ✔️ ✖︎ ✔️ ✔️ ✖︎
✖︎ ✖︎ ✖︎ ✖︎ ✖︎ ✖︎
✖︎ ✖︎ ✖︎ ✖︎ ✖︎ ✖︎
Needs help Needs help Needs help Needs help Needs help Needs help
Needs help Needs help Needs help Needs help Needs help Needs help
Needs help Needs help Needs help Needs help Needs help ✔️

Notes Notes Notes Notes Notes Notes

✔️ ✔️ ✔️ ✔️ ✔️ ✔️
✔️ ✔️ ✔️ ✔️ ✔️ ✔️
✔️ ✔️ ✔️ ✔️ ✔️ ✔️
✔️ ✔️ ✖︎ ✔️ ✔️ ✔️
✖︎ ✔️ ✖︎ ✔️ ✔️ ✔️
✖︎ ✔️ ✖︎ ✔️ ✔️ ✔️
✖︎ ✖︎ ✖︎ ✖︎ ✔️ ✔️
✖︎ ✖︎ ✖︎ ✖︎ ✖︎ ✔️
Needs help Needs help Needs help Needs help Needs help Needs help

✔️ ✔️ ✔️ ✔️ ✔️ ✔️
✔️ ✔️ ✔️ ✔️ ✔️ ✔️
Needs help ✔️ ✖︎ ✔️ ✔️ ✔️

✔️ ✔️ ✔️ ✔️ ✔️ ✔️
Clusterwide Clusterwide Clusterwide Clusterwide Clusterwide Clusterwide
and and and and and and
namespace namespace namespace namespace namespace namespace
Needs help Preview ✔️ Preview Preview ✔️
Needs help ✔️ ✖︎ ✔️ ✔️ ✔️

✔️ ✔️ ✔️ ✔️ ✔️ ✔️
✔️ ✔️ ✔️ ✔️ ✔️ ✔️
✖︎ ✔️ ✔️ ✔️ ✔️ ✔️

✖︎ ✔️ ✖︎ ✖︎ Needs help ✔️
✖︎ ✖︎ ✖︎ ✖︎ Needs help ✖︎
✖︎ ✔️ ✖︎ ✔️ ✔️ ✔️

Needs help ✔️ ✔️ ✔️ Needs help ✔️


✔️ ✔️ ✔️ ✔️ ✔️ ✔️
Needs help Needs help Needs help Needs help Needs help Needs help
Needs help Needs help Needs help Needs help Needs help Needs help
Needs help Needs help Needs help Needs help Needs help Needs help
Skipper Citrix Ingress GKE Ingress ALB Ingress AKO KrakenD

NSX Advanced Lura Project


skipper Citrix ADC GLBC Elastic LB
LB (Avi) (Linux foundation)
https://opensource.zalando.com/skipper/
https://developer-docs.citrix.com/projects/citrix-k8s-ingress-controller/en/latest/
https://cloud.google.com/kubernetes-engine/docs/concepts/ingress
https://kubernetes-sigs.github.io/aws-load-balancer-controller/late
https://avinetworks.com/docs/ako/1.3/avi-kubernet
https://www.krakend.io/docs/overv

✔️ ✔️ ✔️ ✔️ ✔️ ✔️
✖︎
✔️ ✔️ ✔️ ✔️ ✔️
✖︎
✔️ ✔️ ✔️ ✔️ Partial
✖︎ ✖︎
✔️ ✔️ ✔️ ✔️
✖︎ ✖︎
✔️ ✔️ ✔️ ✔️
✖︎ ✖︎
✔️ ✔️ ✔️ ✔️

✔️ ✔️ ✔️ ✔️ ✔️ ✔️
✖︎ ✖︎ ✖︎ ✖︎
✔️ ✔️
✖︎ ✖︎ ✖︎ ✖︎ ✖︎ ✖︎

✖︎ ✔️ ✔️ Needs help ✔️ ✖︎
✔️ ✔️ ✔️ Needs help ✔️ ✔️
✖︎
✔️ ✔️ ✔️ ✔️ ✔️
✔️ ✔️ ✔️ ✔️ ✔️ ✔️
✔️ ✔️ ✔️ ✔️ ✔️ ✔️
✔️ ✔️ ✔️ ✔️ ✔️ ✔️
✔️ ✔️ ✔️ ✔️ ✔️ ✔️

✔️ ✔️ ✔️ ✔️ ✔️ ✔️
✔️ ✔️ ✔️ ✔️ ✔️ ✔️
✔️ ✔️ ✖︎ ✔️ ✔️ ✖︎
✔️ ✔️ ✖︎ ✔️ ✔️ ✖︎
✔️ ✔️ ✖︎ ✔️ ✔️ ✔️
✔️ ✔️ ✖︎ ✔️ ✔️ ✖︎

Notes Notes Notes Notes Notes Notes


✖︎ ✔️ ✔️ ✔️ ✔️ Partial
Partial ✖︎ Needs help ✖︎ ✔️ ✖︎
✔️ ✔️ Needs help ✖︎ ✖︎ ✔️

✔️ ✔️ ✔️ ✔️ ✔️ ✔️
Partial ✔️ ✔️ ✔️ ✔️ ✖︎
✖︎ ✔️ ✔️ ✔️ ✔️ ✖︎
✔️ ✔️ ✔️ ✖︎ ✔️ ✖︎
✖︎ ✖︎ ✔️ ✖︎ ✖︎ ✖︎
✖︎ ✖︎ ✖︎ ✖︎ ✖︎ ✖︎
✖︎ ✖︎ ✖︎ ✖︎ ✖︎ ✖︎
✔️ Needs help Needs help Needs help Needs help ✔️
Needs help ✔️ Needs help Needs help ✔️ ✖︎
Needs help ✔️ Needs help Needs help Needs help ✖︎

Notes Notes Notes Notes Notes Notes

✔️ ✔️ ✖︎ ✖︎ ✔️ ✔️
✔️ ✖︎ ✔️ ✖︎ ✖︎ ✔️
Partial ✔️ ✖︎ ✖︎ ✔️ ✔️
✔️ ✔️ ✔️ ✔️ ✖︎ ✔️
✔️ ✔️ ✔️ ✔️ ✖︎ ✔️
✔️ ✔️ ✔️ ✖︎ Partial ✔️
✖︎ ✖︎ ✔️ ✖︎ ✔️ ✖︎
✖︎ ✖︎ ✖︎ ✖︎ ✖︎ ✖︎
Needs help ✔️ Needs help Needs help ✔️ ✖︎

✔️ ✔️ ✔️ ✔️ ✔️ ✔️
✔️ ✔️ ✔️ ✖︎ ✔️ ✔️
✔️ ✔️ Needs help ✖︎ ✖︎ ✔️

✔️ ✔️ ✔️ ✖︎ ✔️ ✖︎
Clusterwide Clusterwide Clusterwide Clusterwide,
and and Clusterwide and namespace & Clusterwide
namespace namespace namespace Multi cluster
✖︎ ✖︎ Preview ✖︎ ✖︎ ✖︎
✔️ Needs help ✖︎ ✖︎ ✖︎

✔️ ✔️ ✖︎ ✖︎ ✔️ ✖︎
✔️ ✔️ ✔️ ✔️ ✔️ ✖︎
✔️ ✔️ ✖︎ ✖︎ ✔️ ✔️

✖︎ ✖︎ Needs help ✖︎ ✔️ ✔️
✖︎ ✖︎ ✔️ ✖︎ ✔️ ✔️
✔️ ✖︎ ✖︎ ✖︎ ✔️ ✖︎

✔️ Needs help Needs help Needs help ✔️ ✔️


✖︎ ✔️ ✔️ ✔️ ✖︎ ✖︎
Needs help ✔️ Needs help Needs help ✔️ ✖︎
Needs help Needs help Needs help Needs help ✔️ ✖︎
Needs help ✔️ Needs help Needs help Needs help ✖︎
Tyk

Golang http
server
https://tyk.io/docs/

✔️

✔️

✔️

✔️

✔️
✖︎

✔️

✔️
✖︎

✖︎
✔️
✖︎

✔️
✔️
✔️
✔️

✔️
✔️
✔️
✔️
✔️
✔️

Notes
✔️
✔️
✔️

✔️
✖︎
✖︎
✖︎
✖︎
✖︎
✖︎
✔️
✖︎
✖︎

Notes

✖︎
✔️
✔️
Partial
✖︎
✔️
✖︎
✖︎
✖︎

✔️
✔️
✔️

✔️

Clusterwide

✖︎
✖︎

✔️
✖︎
✖︎

✔️
✔️
✔️

✔️
✖︎
✖︎
✖︎
✖︎
Date
Contributor
yolossn
eskibars
24-Oct-20 PK
5-Jan-21 eskibars
gxthrj
15-Jan-21 Bhushan Pai
Mateus Caruccio
24-Dec-21 Jing Lin
Feb-22 pie-r
Jan-27 Dario Tranchitella
For
Kong, Traefik, HAProxy, Istio, Contour, Voyager, Gloo, Citrix
Kong
Compacted the format a bit to fit side by side in a typical screen
Kong: updated several old links
Apache APISIX
AKO
Typo
NGINX+: support mTLS
LearnK8S
HAProxy Technologies
Link
https://twitter.com/yolossn
https://github.com/eskibars
https://gae123.com
https://github.com/eskibars
https://github.com/gxthrj

http://github.com/caruccio
https://linjing.io
https://medium.com/@pie-r
https://github.com/prometherion

You might also like