1. Apache APISIX Ingress 定義
在 K8s 生態中,Ingress 作為表示 K8s 流量入口的一種資源,想要讓其生效,就需要有一個 Ingress Controller 去監聽 K8s 中的 Ingress 資源,并對這些資源進行相應規則的解析和實際承載流量。在當下趨勢中,像 Kubernetes Ingress Nginx 就是使用最廣泛的 Ingress Controller 實現。 而 APISIX Ingress 則是另一種 Ingress Controller 的實現。跟 Kubernetes Ingress Nginx 的區別主要在于 APISIX Ingress 是以 Apache APISIX 作為實際承載業務流量的數據面。如下圖所示,當用戶請求到具體的某一個服務/API/網頁時,通過外部代理將整個業務流量/用戶請求傳輸到 K8s 集群,然后經過 APISIX Ingress 進行后續處理。 從上圖可以看到,APISIX Ingress 分成了兩部分。一部分是 APISIX Ingress Controller,作為控制面它將完成配置管理與分發。另一部分 APISIX Proxy Pod 負責承載業務流量,它是通過 CRD(Custom Resource Definitions)的方式實現的。Apache APISIX Ingress 除了支持自定義資源外,還支持原生的 K8s Ingress 資源。 ?
2. Apache APISIX 簡述
前邊我們提到了 APISIX Ingress 是采用 Apache APISIX 作為實際承載業務流量的數據面,那么 Apache APISIX 項目又是做什么的呢? Apache APISIX 是 Apache 基金會旗下的頂級開源項目,也是當前最活躍的開源網關項目。作為一個動態、實時、高性能的開源 API 網關,Apache APISIX 提供了負載均衡、動態上游、灰度發布、服務熔斷、身份認證、可觀測性等豐富的流量管理功能。 Apache APISIX 可以幫助企業快速、安全地處理 API 和微服務流量,比如限流認證、日志安全功能,以及支持豐富的自定義插件。目前也與很多開源項目如 Apache SkyWalking、Prometheus 等之類的組件進行了相關集成。 ?
3. APISIX Ingress vs K8s Ingress Nginx
1)配置層面
在 APISIX Ingress 中,我們增加了一些豐富且靈活的配置,比如通過單個配置文件去實現灰度部署。但在 K8s Ingress Nginx 中去實現如上效果的話,最少也需要有兩個 Ingress 資源文件才可以完成。
2)豐富度
在豐富度上,由于 Apache APISIX 本身的自帶功能豐富且允許多種插件擴展使用,所以使用 APISIX Ingress 就可以省去自己額外配置功能的繁瑣步驟,可以將更多的時間投入到實際開發中。
3)架構分離
APISIX Ingress 采用了數據面與控制面的分離架構,所以用戶可以選擇將數據面部署在 K8s 集群內部/外部。但 K8s Ingress Nginx 是將控制面和數據面放在了同一個 Pod 中,如果 Pod 或控制面出現一點閃失,整個 Pod 就會掛掉,進而影響到業務流量。 這種架構分離,給用戶提供了比較方便的部署選擇,同時在業務架構調整場景下,也方便進行相關數據的遷移與使用。
4. APISIX Ingress 特性詳解
由于 Apache APISIX 是一個全動態的高性能網關,所以在 APISIX Ingress 自身就支持了全動態,包括路由、SSL 證書、上游以及插件等等。 同時 APISIX Ingress 還具有以下特性:
支持 CRD,更容易理解聲明式配置;同時狀態檢查可保證快速掌握聲明配置的同步狀態;
支持高級路由匹配規則以及自定義資源,可與 Apache APISIX 官方 50 多個插件 & 客戶自定義插件進行擴展使用;
支持 K8s 原生 Ingress 配置;
支持流量切分;
支持 gRPC plaintext 與 TCP 4 層代理;
服務自動注冊發現,無懼擴縮容;
更靈活的負載均衡策略,自帶健康檢查功能;
責任編輯:彭菁
-
數據
+關注
關注
8文章
6550瀏覽量
87867 -
API
+關注
關注
2文章
1419瀏覽量
61161 -
流量
+關注
關注
0文章
241瀏覽量
23768 -
生態鏈
+關注
關注
0文章
66瀏覽量
9864
原文標題:Apache APISIX了解下
文章出處:【微信號:aming_linux,微信公眾號:阿銘linux】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論