ABCDEFGHIJKLMNOPQRSTUVWXYZAAAB
1
2
Product/ProjectIngress Nginx KongApache APISIXAzure App Gateway IngressNginx+HAProxy TechHAProxy (jcmoraisjr)VoyagerIstio IngressContourEmissary-ingress
(ex Ambassador)
GlooEnvoy GatewayTraefikSkipperCitrix IngressGKE IngressALB IngressAKOKrakenDTyk
3
1. General info
4
Based onnginxnginxnginxnginx + Azure App GatewaynginxhaproxyhaproxyhaproxyenvoyenvoyenvoyenvoyenvoytraefikskipperCitrix ADCGLBCElastic LBNSX Advanced
LB (Avi)
Lura Project
(Linux foundation)
Golang http
server
5
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-ingresshttps://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/https://docs.solo.io/gloo-edge/latest/https://gateway.envoyproxy.io/https://doc.traefik.io/traefik/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/latest/
https://avinetworks.com/docs/ako/1.3/avi-kubernetes-operator/
https://www.krakend.io/docs/overview/
https://tyk.io/docs/
6
2. Protocolsreference
7
HTTP/HTTPS✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️
8
HTTP2Comparison of Kubernetes Ingress controllers✔️✔️✔️Partial✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✖︎✔️✔️✔️✔️✔️✔️
9
HTTP3 (QUIC)Preview✖︎✖︎✖︎Preview✖︎✖︎✖︎Preview✖︎✔️✖︎✔️Preview✖︎✔️✖︎✖︎✖︎✖︎✖︎
10
gRPC✔️✔️✔️✖︎✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✖︎✔️✔️✔️✔️Partial✔️
11
TCPPartial✔️✔️✖︎✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✖︎✔️✔️✔️✔️✖︎✔️
12
TCP+TLS✖︎✔️✔️✖︎✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✖︎✔️✔️✔️✔️✖︎✔️
13
UDPPartial✔️✔️✖︎✔️✖︎✖︎✖︎✖︎✖︎✖︎✖︎✔️✔️✖︎✔️✔️✔️✔️✖︎✖︎
14
Websockets✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️
15
Proxy Protocol✔️✔️✔️Needs help✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✖︎✖︎✖︎✔️✔️✖︎✔️
16
3. ClientsLeave a comment or drop us a line at research@learnk8s.io
17
Rate limiting (L4)✔️✔️Needs helpPartial✔️✔️✔️✔️✔️✖︎✔️✔️Needs help✔️✖︎✔️✔️Needs help✔️✖︎✖︎
18
Rate limiting (L7)✔️✔️✔️Partial✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️Needs help✔️✔️✔️
19
WAFLicense:✔️✔️Partial✔️✔️✔️✔️✖︎✖︎✖︎✔️✔️✔️✔️✔️✔️✔️✔️✔️✖︎✖︎
20
TimeoutsApache 2.0✔️✔️✔️✖︎✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️
21
Safe-list/Block-listLast updated:✔️✔️✔️✖︎✔️✔️✔️Partial✔️✖︎✔️Needs help✔️✔️✔️✔️✔️✔️✔️✔️✔️
22
AuthenticationAugust 21, 2023✔️✔️✔️✖︎✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️
23
Authorisation✖︎✔️✔️✖︎✔️✔️Partial✖︎✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️
24
4. Traffic routingFind more research at:
25
Hosthttps://learnk8s.io/research✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️
26
Path✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️
27
Headers✔️Supported in Free version✔️✔️✔️✔️✔️✔️✔️✖︎✔️✔️✔️✔️✔️✔️✔️✔️✖︎✔️✔️✖︎✔️
28
Querystring✔️Supported in Enterprise version✔️✔️✔️✔️✔️✔️✔️✖︎✔️✖︎✔️✔️✔️✔️✔️✔️✖︎✔️✔️✖︎✔️
29
Method✖︎Not supported✔️✔️✔️✔️✔️✔️✔️✖︎✔️✔️✔️✔️✔️✔️✔️✔️✖︎✔️✔️✔️✔️
30
ClientIPPartialPartially supported✔️✔️✔️✔️✔️✔️✔️✖︎✔️✖︎✔️✔️✔️✔️✔️✔️✖︎✔️✔️✖︎✔️
31
NotesNeeds helpNot sure if it is supported
32
NotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotes
33
5. Upstream probes/resiliency
34
Healthchecks✖︎✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✖︎✔️✔️✔️✔️Partial✔️
35
Retries✔️✔️✔️✔️✔️✔️✔️✖︎✔️✔️✔️✔️✔️✔️Partial✖︎Needs help✖︎✔️✖︎✔️
36
Circuit Breaker✖︎✔️✔️✖︎✔️✔️✖︎✖︎✔️✖︎✔️✔️✔️✔️✔️✔️Needs help✖︎✖︎✔️✔️
37
6.Load balancer strategies
38
Round robin✔️✔️✔️✖︎✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️
39
Sticky sessions✔️✔️✔️✖︎✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️Partial✔️✔️✔️✔️✖︎✖︎
40
Least connections✖︎✔️✔️✖︎✔️✔️✔️✔️✔️✔️✔️✔️✔️✖︎✖︎✔️✔️✔️✔️✖︎✖︎
41
Ring hash✔️✔️✔️✖︎✔️✖︎✖︎✖︎✔️✔️✔️✔️Needs help✖︎✔️✔️✔️✖︎✔️✖︎✖︎
42
Maglev✖︎✖︎✖︎✖︎✖︎✖︎✖︎✖︎✔️✖︎✔️✔️✔️✖︎✖︎✖︎✔️✖︎✖︎✖︎✖︎
43
Exponential-Weighted-Moving-Average✔️✖︎✔️✖︎✖︎✖︎✖︎✖︎✖︎✖︎✖︎✖︎Needs help✖︎✖︎✖︎✖︎✖︎✖︎✖︎✖︎
44
Custom load balancing✖︎✖︎✔️✖︎Partial✖︎✖︎✖︎✖︎✖︎✖︎✖︎✖︎✖︎✖︎✖︎✖︎✖︎✖︎✖︎✖︎
45
Power of two random choicesNeeds helpNeeds helpNeeds helpNeeds help✔️✖︎✖︎Needs helpNeeds helpNeeds helpNeeds helpNeeds helpNeeds helpNeeds help✔️Needs helpNeeds helpNeeds helpNeeds help✔️✔️
46
Global load balancingNeeds helpNeeds help✔️Needs help✔️✖︎Needs helpNeeds helpNeeds helpNeeds helpNeeds helpNeeds helpNeeds helpNeeds helpNeeds help✔️Needs helpNeeds help✔️✖︎✖︎
47
External load balancingNeeds helpNeeds helpNeeds helpNeeds help✔️✔️Needs helpNeeds helpNeeds helpNeeds helpNeeds helpNeeds helpNeeds help✔️Needs help✔️Needs helpNeeds helpNeeds help✖︎✖︎
48
Notes
49
NotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotes
50
7. Authentication
51
Basic auth✔️✔️✔️✖︎✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✖︎✖︎✔️✔️✖︎
52
External Auth✔️✔️✔️✖︎✔️✖︎✔️✔️✔️✔️✔️✔️✔️✔️✔️✖︎✔️✖︎✖︎✔️✔️
53
Client certificate - mTLS✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️Partial✔️✖︎✖︎✔️✔️✔️
54
OAuth✔️✔️✔️✖︎✔️✔️✔️✔️✔️✖︎✔️✔️Needs help✔️✔️✔️✔️✔️✖︎✔️Partial
55
OpenID✖︎✔️✔️✖︎✔️✔️✖︎✖︎✔️✖︎✔️✔️✔️✔️✔️✔️✔️✔️✖︎✔️✖︎
56
JWT✖︎✔️✔️✖︎✔️✖︎✖︎✖︎✔️✖︎✔️✔️✔️✔️✔️✔️✔️✔️Partial✔️✔️
57
LDAP✖︎✔️✔️✖︎✔️✖︎✖︎✖︎✖︎✖︎✖︎✔️Needs help✔️✖︎✖︎✔️✖︎✔️✖︎✖︎
58
HMAC✖︎✔️✔️✖︎✔️✖︎✖︎✖︎✖︎✖︎✖︎✖︎Needs help✔️✖︎✖︎✖︎✖︎✖︎✖︎✖︎
59
SAMLNeeds help✔️✔️Needs help✔️✖︎Needs helpNeeds helpNeeds helpNeeds helpNeeds helpNeeds helpNeeds helpNeeds helpNeeds help✔️Needs helpNeeds help✔️✖︎✖︎
60
8. Observability
61
Logging✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️
62
Metrics✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✖︎✔️✔️✔️
63
Tracing✔️✔️✔️✔️✔️✔️✖︎Needs help✔️✔️✔️✔️✔️✔️✔️✔️Needs help✖︎✖︎✔️✔️
64
9. Kubernetes Integration
65
CRD✖︎✔️✔️✔️✔️✔️✖︎✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✖︎✔️✖︎✔️
66
ScopeClusterwide and namespaceClusterwide and namespacenamespaceClusterwide and namespaceClusterwide and namespaceClusterwide and namespaceClusterwide and namespaceClusterwide and namespaceClusterwide and namespaceClusterwide and namespaceClusterwide and namespaceClusterwide and namespaceClusterwide and namespaceClusterwide and namespaceClusterwide and namespaceClusterwide and namespaceClusterwide Clusterwide and namespaceClusterwide,
namespace &
Multi cluster
Clusterwide Clusterwide
67
Support for the Gateway API (Ingress v2)
current v1alpha2
✖︎✔️Preview✖︎PreviewPreview✔️Needs helpPreview✔️PreviewPreview✔️✔️✖︎✖︎Preview✖︎✖︎✖︎✖︎
68
Integrates with service meshes✔️✔️✔️✖︎✔️✔️✔️Needs help✔️✖︎✔️✔️✔️✔️✔️Needs help✖︎✖︎✖︎✖︎
69
10. Traffic shaping
70
Canary✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✖︎✖︎✔️✖︎✔️
71
Session Affinity✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✖︎✖︎
72
Traffic Mirroring✔️Needs help✔️✔️✔️✔️✔️✖︎✔️✔️✔️✔️✔️✔️✔️✔️✖︎✖︎✔️✔️✖︎
73
11. Interface
74
Dashboard✖︎✔️✔️✔️✔️✖︎✖︎✖︎✔️✖︎✔️Needs helpNeeds help✔️✖︎✖︎Needs help✖︎✔️✔️✔️
75
Billing and reporting✖︎✔️✔️✔️✖︎✔️✖︎✖︎✖︎✖︎✔️Needs helpNeeds help✖︎✖︎✖︎✔️✖︎✔️✔️✔️
76
Developer portal✖︎✔️✔️✔️✔️✔️✖︎✖︎✔️✖︎✔️✔️Needs help✔️✔️✖︎✖︎✖︎✔️✖︎✔️
77
12. Other
78
Hot reloading✔️✔️✔️Needs help✔️✔️✔️Needs help✔️✔️✔️Needs help✔️✔️✔️Needs helpNeeds helpNeeds help✔️✔️✔️
79
LetsEncrypt Integration✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✖︎✔️✔️✔️✔️✖︎✖︎
80
Transparent update of certificatesNeeds helpNeeds help✔️Needs helpNeeds help✔️Needs helpNeeds helpNeeds helpNeeds helpNeeds helpNeeds helpNeeds helpNeeds helpNeeds help✔️Needs helpNeeds help✔️✖︎✖︎
81
Wildcard certificate support✔️✔️✔️✔️✔️✔️Needs helpNeeds helpNeeds helpNeeds help✔️Needs help✔️Needs helpNeeds helpNeeds helpNeeds helpNeeds help✔️✖︎✖︎
82
State sharingNeeds helpNeeds helpNeeds helpNeeds help✔️✔️Needs helpNeeds helpNeeds helpNeeds helpNeeds helpNeeds helpNeeds helpNeeds helpNeeds help✔️Needs helpNeeds helpNeeds help✖︎✖︎
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100