ABCDEFGHIJKLMNOPQRSTUVWXY
1
2
Product/ProjectIngress Nginx KongApache APISIXAzure App Gateway IngressNginx+HAProxy TechHAProxy (jcmoraisjr)VoyagerIstio IngressContourAmbassadorGlooTraefikSkipperCitrix IngressGKE IngressALB IngressAKO
3
1. General info
4
Based onnginxnginxnginxnginx + Azure App GatewaynginxhaproxyhaproxyhaproxyenvoyenvoyenvoyenvoytraefikskipperCitrix ADCGLBCElastic LB
NSX Advanced
LB (Avi)
5
Documentation
https://kubernetes.github.io/ingress-nginx/
https://github.com/Kong/kubernetes-ingress-controller/tree/main/docshttps://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/docs/latest/https://docs.solo.io/gloo-edge/latest/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/
6
2. Protocols
7
HTTP/HTTPS✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️
8
HTTP2Comparison of Kubernetes Ingress controllers✔️✔️✔️Partial✔️✔️✔️✔️✔️✔️✔️✔️✔️✖︎✔️✔️✔️✔️
9
gRPC✔️✔️✔️✖︎✔️✔️✔️✔️✔️✔️✔️✔️✔️✖︎✔️✔️✔️✔️
10
TCPPartial✔️✔️✖︎✔️✔️✔️✔️✔️✔️✔️✔️✔️✖︎✔️✔️✔️✔️
11
TCP+TLS✖︎✔️✔️✖︎✔️✔️✔️✔️✔️✔️✔️✔️✔️✖︎✔️✔️✔️Partial
12
UDPPartial✔️✔️✖︎✔️✖︎✖︎✖︎✖︎✖︎✖︎✖︎✔️✖︎✔️✔️✔️✔️
13
Websockets✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️
14
Proxy Protocol✔️✔️✔️Needs help✔️✔️✔️✔️✔️✖︎✔️✔️✔️✖︎✖︎✖︎✔️✔️
15
QUIC/HTTP3✖︎✖︎Preview✖︎Preview✖︎✖︎✖︎✖︎✖︎✖︎✖︎✖︎✖︎✖︎✖︎✖︎✖︎
16
WAF✔️✖︎Partial✔️✔️✔️✔️✖︎✖︎✖︎✔️✔️✖︎✔️✔️✔️✔️✔️
17
mTLS✔️✔️
18
Notes
19
NotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotes
20
3. ClientsLeave a comment or drop us a line at research@learnk8s.io
21
Rate limiting (L4)✔️✔️Needs helpPartial✔️✔️✔️✔️✔️✖︎✔️✔️✔️✖︎✔️✔️Needs help✔️
22
Rate limiting (L7)License:✔️✔️✔️Partial✔️✔️✔️✔️✔️✖︎✔️✔️✖︎✔️✔️✔️Needs help✔️
23
TimeoutsApache 2.0✔️✔️✔️✖︎✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️
24
Safe-list/Block-listLast updated:✔️✔️✔️✖︎✔️✔️✔️Partial✖︎✖︎✔️Needs help✔️✔️✔️✔️Needs help✔️
25
AuthenticationFebruary 17, 2021✔️✔️✔️✖︎✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️
26
Authorisation✖︎✔️✔️✖︎Needs help✔️Partial✖︎✔️✔️✖︎✔️✖︎✔️✔️✔️✔️✔️
27
NotesFind more research at:
28
https://learnk8s.io/researchNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotes
29
4. Traffic routing
30
Host✔️Supported in Free version✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️
31
Path✔️Supported in Enterprise version✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️
32
Headers✖︎Not supported✔️✔️✔️✔️✔️✖︎✔️✖︎✔️✔️✔️✔️✔️✔️✔️✖︎✔️✔️
33
QuerystringPartialPartially supported✔️✔️✔️✔️✔️✖︎✔️✖︎✔️✖︎Partial✔️✔️✔️✔️✖︎✔️✔️
34
MethodNeeds helpNot sure if it is supported✔️✔️✔️✔️✔️✖︎✔️✖︎✔️✖︎✔️✔️✔️✔️✔️✖︎✔️✔️
35
ClientIP✔️✖︎✔️
36
Notes
37
NotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotes
38
5. Upstream probes/resiliency
39
Healthchecks✖︎✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✖︎✔️✔️✔️✔️
40
Retries✔️✔️✔️✔️✔️✔️✔️✖︎✔️✔️✔️✔️✔️Partial✖︎Needs help✖︎✔️
41
Circuit Breaker✖︎✔️✔️✖︎✔️✔️✖︎✖︎✔️✖︎✔️✔️✔️✔️✔️Needs help✖︎✖︎
42
Notes
43
NotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotes
44
6.Load balancer strategies
45
Round robin✔️✔️✔️✖︎✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️
46
Sticky sessions✔️✔️✔️✖︎✔️✔️✔️✔️✔️✔️✔️✔️✔️Partial✔️✔️✔️✔️
47
Least connections✖︎✔️✔️✖︎✔️✔️✔️✔️✔️✔️✔️✔️✖︎✖︎✔️✔️✔️✔️
48
Ring hash✔️✔️✔️✖︎✔️✖︎✖︎✖︎✔️✖︎✔️✔️✖︎✔️Needs help✔️✖︎✔️
49
Maglev✖︎✖︎✖︎✖︎✖︎✖︎✖︎✖︎✔️✖︎✔️✔️✖︎✖︎✖︎✔️✖︎✖︎
50
Exponential-Weighted-Moving-Average✔️✖︎✔️✖︎✖︎✖︎✖︎✖︎✖︎✖︎✖︎✖︎✖︎✖︎✖︎✖︎✖︎✖︎
51
Custom load balancing✔️
52
Notes
53
NotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotes
54
7. Authentication
55
Basic auth✔️✔️✔️✖︎✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✖︎✖︎✔️
56
External Auth✔️✔️✔️✖︎✔️✖︎✖︎✔️✔️✔️✔️✔️✔️✔️✖︎✔️✖︎✖︎
57
Client certificate✔️✔️✔️✖︎✔️✔️✔️✔️✔️✔️✔️✔️✔️Partial✔️✖︎✖︎✔️
58
OAuth✔️✔️✔️✖︎✔️✖︎✔️✔️✔️✖︎✔️✔️✔️✔️✔️✔️✔️✖︎
59
OpenID✖︎✔️✔️✖︎✔️✖︎✖︎✖︎✔️✖︎✔️✔️✔️✔️✖︎✔️✔️✖︎
60
JWT✖︎✔️✔️✖︎✔️✖︎✖︎✖︎✔️✖︎✔️✔️✔️✔️✖︎✔️✖︎Partial
61
LDAP✖︎✔️✔️✖︎✔️✖︎✖︎✖︎✖︎✖︎✖︎✔️✔️✖︎✖︎✔️✖︎✔️
62
HMAC✖︎✔️✔️✖︎Needs help✖︎✖︎✖︎✖︎✖︎✖︎✖︎✔️✖︎✖︎✖︎✖︎✖︎
63
SAML✔️✖︎✔️
64
Notes
65
NotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotes
66
8. Observability
67
Metrics✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✖︎✔️
68
Tracing✔️✔️✔️✔️✔️Needs help✖︎Needs help✔️✔️✔️✔️✔️✔️✔️Needs help✖︎✖︎
69
Notes
70
NotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotes
71
9. Kubernetes Integration
72
StateKubernetesKubernetesKubernetesKubernetesKubernetesKubernetesKubernetesKubernetesKubernetesKubernetesKubernetesKubernetes, NomadKubernetesKubernetesKubernetesKubernetesKubernetesKubernetes
73
CRD✖︎✔️✔️✔️✔️✖︎✖︎✔️✔️✔️✔️Needs help✔️✔️✔️✔️✖︎✔️
74
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 Clusterwide and namespace
Clusterwide,
namespace &
Multi cluster
75
Support for the Service API (Ingress v2)✖︎✖︎Preview✖︎✖︎✖︎✖︎Needs helpExperimental✖︎✖︎✖︎✖︎✖︎✖︎✖︎✖︎✖︎
76
Integrates with service meshes✔️✔️✔️✖︎✔️✔️✔️Needs help✔️✖︎✔️✔️✔️✖︎✔️Needs help✖︎✖︎
77
Notes
78
NotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotes
79
10. Traffic shaping
80
Canary✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✖︎✖︎✔️
81
Session Affinity✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️
82
Dark launch✔️Needs help✔️✔️✔️✔️✔️✖︎✔️✖︎✔️✔️✔️✔️✔️✖︎✖︎✔️
83
Notesblue-green and A/B or more generic Tee (think UNIX tee)
84
NotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotes
85
11. Interface
86
Dashboard✖︎✔️✔️✔️✔️✖︎✖︎✖︎✔️✖︎✖︎Needs help✔️✖︎✖︎Needs help✖︎✔️
87
Billing and reporting✖︎✔️✔️✔️✖︎✖︎✖︎✖︎✔️✖︎✖︎Needs help✖︎✖︎✖︎✔️✖︎✔️
88
Developer portal✖︎✔️✔️✔️✔️✖︎✖︎✖︎✔️✖︎✔️✔️✔️✔️✖︎✖︎✖︎✔️
89
NotesSkipper is built as library
90
NotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotes
91
12. Performance
92
Elastic HA✔️✔️
93
DPDK✔️✔️
94
TCP Segmentation Offload✔️✔️
95
Generic Receive Offload✔️✔️
96
Receive Side Scaling✔️✔️
97
Notes
98
NotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotesNotes
99
<---WIP--->
100
13. Other