Skip to content

Miss-you/awesome-ingress

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 

Repository files navigation

Awesome-ingress

A curated list of awesome ingress.

目录

Ingress总览

Kubernetes Ingress Istio Ingress Ambassador Kong Ingress APISIX ingress Traefik NGINX Ingress HAproxy
协议 http/https,http2, grpc http/https,http2, grpc,tcp,tcp+tls, mongo,mysql,redis http/https,http2, grpc,tcp,tcp+tls http/https,http2,grpc http/https,http2,grpc,tcp/udp, tcp+tls,tcp+sni, Dubbo http/https,http2, grpc,tcp,tcp+tls http/https,http2, grpc,tcp/udp http/https,http2, grpc,tcp,tcp+tls
基础平台 nginx/openresty envoy envoy openresty openresty/tengine traefik nginx/nginx plus haproxy
路由匹配 host,path host,path, method,headers host,path, method,headers path,method,host,header path,method, host,header, nginx变量,args变量 自定义函数 host,path, headers,query, path prefix,method host,path host,path
命名空间支持 共用或指定命名空间 共用或指定命名空间 共用或指定命名空间 指定命名空间 共用或指定命名空间 共用或指定命名空间 - 共用或指定命名空间
部署策略 金丝雀部署,ab部署 金丝雀部署、蓝绿部署 灰度部署、根据header 白名单 金丝雀部署、蓝绿部署 灰度部署、根据header 白名单 金丝雀部署、蓝绿部署 ab部署、灰度发布、 金丝雀部署 金丝雀部署、蓝绿部署 灰度部署 - 蓝绿部署 灰度部署
upstream探测 重试、超时 重试、超时、 心跳探测、熔断 重试、超时、 心跳探测、熔断 心跳探测、熔断 重试、超时、 心跳探测、熔断 重试、超时、 心跳探测、熔断 重试、超时、心跳探测 心跳探测
负载均衡算法 RR,会话保持, 最小连接,一致性hash EWMA RR,会话保持, 一致性hash, maglev负载均衡 RR,会话保持, 一致性hash, maglev负载均衡 WRR 会话保持 一致性hash, WRR WRR,动态RR 会话保持 RR,会话保持, 最小连接,最短时间,一致性hash RR,static-RR 最小连接,源ip, uri,uri param, uri header 会话保持
鉴权方式 basic-auth oauth basic, external auth, Oauth, OpenID basic, external auth, Oauth, OpenID basic, Key, HMAC, LDAP, Oauth 2.0, PASETO, OpenID Connect key-auth, OpenID Connect basic auth auth-url external auth - basic-auth Oauth Auth TLS
动态路由 - + + + + + - +
JWT - + + + + + + +
DDOS防护能力 limit-conn, limit-count, limit-req, ip-whitelist limit-req, ip-whitelist limit-req, ip-whitelist limit-conn, limit-count, limit-req, ip-whitelist, response limit limit-conn, limit-count, limit-req, ip-whitelist limit-conn, limit-req, ip-whitelist rate-limit limit-conn, limit-req, ip-whitelist
全链路跟踪 + + + + + + - +
协议转换 - grpc,mongo,mysql redis grpc,mongo,mysql redis - grpc,Dubbo grpc - -
文档完善程度 文档丰富 快速入门、详细接口文档、细节文档丰富 快速入门、详细接口文档、细节文档丰富 稀少 快速入门、详细接口文档、细节文档丰富 较少 较少
  • Kubernetes Ingress:即 Kubernetes 推荐默认使用的 Nginx Ingress。它的主要优点为简单、易接入。缺点是Nginx reload耗时长的问题根本无法解决。另外,虽然可用插件很多,但插件扩展能力非常弱。
  • Istio Ingress 和 Ambassador Ingress 都是基于非常流行的 Envoy。说实话,我认为这两个 Ingress 没有什么缺点,可能唯一的缺点是他们基于 Envoy 平台,如果大家对这个平台都不是很熟悉,上手门槛会比较高。
  • Kong:其本身就是一个 API 网关,它也算是开创了先河,将 API 网关引入到 Kubernetes 中当Ingress。另外相对边缘网关,Kong 在鉴权、限流、灰度部署等方面做得非常好。Kong Ingress 还有一个很大的优点:提供了一些 API、服务的定义,可以抽象成 Kubernetes 的 CRD,通过K8S Ingress 配置便可完成同步状态至 Kong 集群。缺点就是部署特别困难,另外在高可用方面,与 APISIX 相比也是相形见绌。
  • APISIX Ingress:它具有非常强大的路由能力、灵活的插件拓展能力,在性能上表现也非常优秀。同时,它的缺点也非常明显,尽管APISIX开源后有非常多的功能,但是缺少落地案例,没有相关的文档指引大家如何使用这些功能。
  • Traefik :基于 Golang 的 Ingress,它本身是一个微服务网关,在 Ingress 的场景应用比较多。他的主要平台基于 Golang,自身支持的协议也非常多,总体来说是没有什么缺点。如果大家熟悉 Golang 的话,也推荐一用。
  • Nginx Ingress:主要优点是在于它完全支持 TCP 和 UDP 协议,但是缺失了鉴权方式、流量调度等其他功能。
  • HAproxy:是一个久负盛名的负载均衡器。它主要优点是具有非常强大的负载均衡能力,其他方面并不占优势。

开源的原因

其实上述的表格其实是在11-12月份我依据自己对一些用过的网关的经验以及基于Comparing Ingress controllers for Kubernetes这篇文章整理的(因为比如traefik/ambassador等网关,我也没有足够的时间来对从未接触过的这些Ingress做功能以及性能等方面的评估。

另一方面,开源社区的Ingress他们的发展速度非常快,我相信半年后,我的表格可能就跟不上潮流了。

最后也是因为当我发了这张图后,有很多同事或者开源社区的朋友私下找我索要这张表格,足以说明我整理的内容的价值。

所以,为了让大家在选型Ingress的路上少走弯路,让该表格能够持续更新,我将这张表格开源出来了,希望大家会喜欢。