8款開源的Kubernetes Ingress Controller/API Gateway推薦

據我所知,這是kubernetes可用網關的最完整的列表。從技術上來說,Ambassador不是ingress,可是它表現地已經很是好了。你可能已經看到了我製做的大表。nginx

下面有個鏈接能夠打開並清晰的看到一個excel表格,包含了圖表的詳細內容,若是發現不正確的地方,請在文章末尾留言,我將及時修改。git

查看全表請點擊這裏github

基於這些特色和我本身的經驗、從別人的描述和其餘相關文章中得知,我嘗試着給每個網關提供了一些選擇的參考條件。下面描述前後順序沒有特別含義。web

1. ingress-nginx

這多是最經常使用的ingress。安全、簡單可靠。支持http、https和ssl termination。你可能還想經過它支TCP、UDP,可是從GitHub上提的issue來看,目前你最好別這樣作。您能夠得到一些良好負載均衡選項以及強大的路由,websocket支持,基礎身份認證和追蹤。算法

可是沒有動態服務發現有點遺憾。有個配置生成器能夠自動生成但仍是不太完美。安全

注意:咱們在這裏談論的內容有官方的Kubernetes ingress。還有來自Nginx公司的Ingress有些設置不同。微信

2. Kong

絕大多數的人認爲Kong只是API網關。它有擴展插件系統使它的功能遠遠超出了正常ingress該有的功能。我不會使用它去作通用的負載均衡可是若是你想用它作API管理也是一個不錯的選擇。websocket

3. Traefik

Traefik的功能多的讓我驚訝。它的彈性伸縮功能很棒,並且咱們從不少博客上能夠了解到它運行穩定。若是您當前正在使用ingress-nginx,那麼爲了讓它支持動態配置將是一個很大的升級。事實上,沒有理由讓我不去用traefik。並且它應該會比如今更加出名。負載均衡

惟一的缺點是它只支持http、https和grpc。若是你非須要TCP負載均衡,那麼您須要選擇其餘方案了。socket

4. HAProxy

它是負載均衡算法之王。它彷佛也很是適合負載均衡TCP鏈接。這是官方的HAProxy ingress,在生產環境使用的經驗告訴咱們它具備極其穩定的記錄。若是須要,您還能夠得到付費支持訂閱。

5. Voyager

Voyager是一個基於HAProxy的Ingress。完美封裝了HAProxy並提供了很好的文檔說明。我沒有看到負載均衡算法的配置位置,因此假設它只是默認爲輪詢。若是那是錯的,請在評論中告訴我,我會更新。

6. Contour

基於Envoy,它有一些更現代的功能,如支持金絲雀部署。它還具備一套良好的負載均衡算法,並支持多種協議。與列出的其餘Ingress不一樣,我從Github那裏瞭解到它仍處於快速發展階段,有望添加更多功能。

7. Ambassador

如上所述,若是你遵循嚴格的kubernetes定義,那麼這個技術上它並不算是一個Ingress。使用Ambassador您只需簡單註釋您的服務,它就像一個ingress路由流量。Ambassador有一些很是酷的功能,其餘任何一個Ingress都沒有像影子流量那樣容許您經過鏡像請求數據在實時生產環境中測試服務。

Ambassador與Opentracing和Istio很好地集成。

8. Istio Ingress

若是您已經在運行Istio,那麼這多是一個很好的默認選擇。它具備Ambassador擁有的一些更現代的功能。它也有故障注入,看起來可能頗有趣。然而,Istio目前在這個領域作了不少工做,而且已經從Ingress轉向Gateway。所以,若是您正在尋找每5秒鐘沒有發生變化的Ingress,您可能仍然須要考慮Ambassador。

總結

這裏沒有明顯的贏家,由於你須要根據你的需求選擇合適的Ingress。目前沒有某一個Ingress能夠作到這一切。

我建議您使用Ambassador。若是您只是運行標準的基於http的微服務而且喜歡瞭解技術前沿,那麼你應該堅決果斷的選擇Istio,Ambassador和Jaeger。

ServiceMesher社區信息

微信羣:聯繫我入羣

社區官網:www.servicemesher.com

Slack:servicemesher.slack.com 須要邀請才能加入

Twitter: twitter.com/servicemesh…

GitHub:github.com/

更多Service Mesh諮詢請掃碼關注微信公衆號ServiceMesher。

相關文章
相關標籤/搜索