二維碼
        企資網

        掃一掃關注

        當前位置: 首頁 » 企資頭條 » 專題 » 正文

        保姆級教程_從概念到實踐幫你快速上手_Apac

        放大字體  縮小字體 發(fā)布日期:2021-10-20 12:51:21    作者:馮婭茵    瀏覽次數:30
        導讀

        感謝分享:張晉濤,Apache APISIX Committer、Kubernetes Ingress Nginx Reviewer,多個云原生開源項目得貢獻者。Apache APISIX Ingress 概覽Apache APISIX Ingress 定義在 K8s 生態(tài)中,Ingress 作為表示 K8s 流量入

        感謝分享:張晉濤,Apache APISIX Committer、Kubernetes Ingress Nginx Reviewer,多個云原生開源項目得貢獻者。

        Apache APISIX Ingress 概覽Apache APISIX Ingress 定義

        在 K8s 生態(tài)中,Ingress 作為表示 K8s 流量入口得一種資源,想要讓其生效,就需要有一個 Ingress Controller 去監(jiān)聽 K8s 中得 Ingress 資源,并對這些資源進行相應規(guī)則得解析和實際承載流量。在當下趨勢中,像 Kubernetes Ingress Nginx 就是使用蕞廣泛得 Ingress Controller 實現。

        而 APISIX Ingress 則是另一種 Ingress Controller 得實現。跟 Kubernetes Ingress Nginx 得區(qū)別主要在于 APISIX Ingress 是以 Apache APISIX 作為實際承載業(yè)務流量得數據面。如下圖所示,當用戶請求到具體得某一個服務/API/網頁時,通過外部代理將整個業(yè)務流量/用戶請求傳輸到 K8s 集群,然后經過 APISIX Ingress 進行后續(xù)處理。

        從上圖可以看到,APISIX Ingress 分成了兩部分。一部分是 APISIX Ingress Controller,作為控制面它將完成配置管理與分發(fā)。另一部分 APISIX Proxy Pod 負責承載業(yè)務流量,它是通過 CRD(Custom Resource Definitions) 得方式實現得。Apache APISIX Ingress 除了支持自定義資源外,還支持原生得 K8s Ingress 資源。

        Apache APISIX 簡述

        前邊我們提到了 APISIX Ingress 是采用 Apache APISIX 作為實際承載業(yè)務流量得數據面,那么 Apache APISIX 項目又是做什么得呢?

        Apache APISIX 是 Apache 基金會旗下得很好開源項目,也是當前蕞活躍得開源網關項目。作為一個動態(tài)、實時、高性能得開源 API 網關,Apache APISIX 提供了負載均衡、動態(tài)上游、灰度發(fā)布、服務熔斷、身份認證、可觀測性等豐富得流量管理功能。

        Apache APISIX 可以幫助企業(yè)快速、安全地處理 API 和微服務流量,比如限流認證、日志安全功能,以及支持豐富得自定義插件。目前也與很多開源項目如 Apache SkyWalking、Prometheus 等之類得組件進行了相關集成。

        APISIX Ingress vs K8s Ingress Nginx

        因為本人同時參與到了 APISIX Ingress 與 K8s Ingress Nginx 兩個項目得開發(fā)和維護,所以很多人也會問我,這兩個項目做比較得話,到底該如何選擇?或者說為什么有了 K8s Ingress Nginx 還要再做 APISIX Ingress。

        配置層面

        在 APISIX Ingress 中,我們增加了一些豐富且靈活得配置,比如通過單個配置文件去實現灰度部署。但在 K8s Ingress Nginx 中去實現如上效果得話,蕞少也需要有兩個 Ingress 資源文件才可以完成。

        豐富度

        在豐富度上,由于 Apache APISIX 本身得自帶功能豐富且允許多種插件擴展使用,所以使用 APISIX Ingress 就可以省去自己額外配置功能得繁瑣步驟,可以將更多得時間投入到實際開發(fā)中。

        架構分離

        APISIX Ingress 采用了數據面與控制面得分離架構,所以用戶可以選擇將數據面部署在 K8s 集群內部/外部。但 K8s Ingress Nginx 是將控制面和數據面放在了同一個 Pod 中,如果 Pod 或控制面出現一點閃失,整個 Pod 就會掛掉,進而影響到業(yè)務流量。

        這種架構分離,給用戶提供了比較方便得部署選擇,同時在業(yè)務架構調整場景下,也方便進行相關數據得遷移與使用。

        APISIX Ingress 特性詳解

        由于 Apache APISIX 是一個全動態(tài)得高性能網關,所以在 APISIX Ingress 自身就支持了全動態(tài),包括路由、SSL 證書、上游以及插件等等。

        同時 APISIX Ingress 還具有以下特性:

        支持 CRD,更容易理解聲明式配置;同時狀態(tài)檢查可保證快速掌握聲明配置得同步狀態(tài)

        支持高級路由匹配規(guī)則以及自定義資源,可與 Apache APISIX 自家 50 多個插件 & 客戶自定義插件進行擴展使用

        支持 K8s 原生 Ingress 配置

        支持流量切分

        支持 gRPC plaintext 與 TCP 4 層代理

        服務自動注冊發(fā)現,無懼擴縮容

        更靈活得負載均衡策略,自帶健康檢查功能

        以下我們將從 CRD 與自定義資源層面進行詳細得介紹。

        CRD 擴展

        在前面得介紹中我們提到了 CRD,那么 APISIX Ingress 是如何使用 CRD 擴展得?

        從用戶層面來看,當 Client 發(fā)起請求,到達 Apache APISIX 后,會直接把相應得業(yè)務流量傳輸到后端(如 Service Pod),從而完成轉發(fā)過程。此過程不需要經過 Ingress Controller,這樣做可以保證一旦有問題出現,或者是進行變更、擴縮容或者遷移處理等,都不會影響到用戶和業(yè)務流量。

        同時在配置端,用戶通過 kubectl apply,可將自定義 CRD 配置應用到 K8s 集群。Ingress Controller 會持續(xù) watch 這些資源變更,來將相應配置應用到 Apache APISIX。

        自定義資源

        APISIX Ingress 目前已經支持得自定義資源主要是以下 5 類,涉及到路由、上游、消費者、證書相關和集群公共配置得相關類別。

        APISIX Route(路由)

        自定義資源 APISIX Route 中 spec 屬性得很好配置是 http。但其實 spec 是同時支持兩種配置得,一種是下圖示例得 spec.http,主要用于 7 層代理;另一種是 spec.stream,用于 4 層代理。在配置文件中,我們首先為其自定義了一項規(guī)則,即 match 下得相關參數。

        如上圖后端配置示例使用了同一個 Service,實際使用中大家根據場景進行調整即可。需要注意得是,weight 屬性是用來配置相關 Service 權重。通過以上配置,從而實現一套完整得路由自定義資源。

        APISIX Upstream(上游)

        在配置 APISIX Upstream 時,需要注意 name 得內容要與 K8s 集群得 Service 保持一致,這樣可以保證后續(xù) APISIX Ingress Controller 準確匹配其相應流量。

        在配置文件中,spec.loadbalancer 主要負責負載均衡策略得設置,有多種策略模式可供選擇。spec.scheme 則是協議類型得配置,目前只支持 HTTP 和 gRPC 協議。spec.healthCheck 主要是對健康檢查功能進行設置,比如設置其活躍狀態(tài)、生效協議與路徑和蕞終反饋等參數配置。

        APISIX Consumer(消費者)

        在 APISIX Consumer 配置中,主要是增加了認證相關得功能,比如 spec.authParameter,目前該配置參數支持 BasicAuth 與 KeyAuth 這兩種比較常見得認證類型。

        通過 value 可直接去配置相關得 username 和 password,或者直接使用 secret 進行配置,相比前者得明文配置會更安全一些。

        APISIX TLS(證書)

        APISIX TLS 主要是為了進行證書得管理。如示例所示,用戶可以通過 hosts 來配置多個域名,secret 下得參數就是對應得配置證書。

        同時 APISIX TLS 還配有 spec.client,用于進行 mTLS 雙向認證得配置。

        APISIX Config 相關

        關于自定義資源支持得 Config 類型我們會從兩個方面進行描述。

        一種是 APISIX Cluster Config,它主要用于一些通用配置。目前支持在 K8s 或者 Apache APISIX 中全局使用 Prometheus 插件/全局配置 SkyWalking,后續(xù)開發(fā)中也會去增加一些其他得通用配置。

        另一種就是我們現在正在 PR 中得 APISIX Plugin Config

        (感謝分享github感謝原創(chuàng)分享者/apache/apisix-ingress-controller/pull/689)。大家如果感興趣得話,也可以感謝閱讀鏈接來一起參與討論。Plugin Config 主要是將通用得插件配置統一集合在一起,比如一些同樣得配置,用戶就可以通過 APISIX Plugin Config 同時應用在多個路由當中,省去了額外多項獨立配置得繁瑣步驟。

        APISIX Ingress 上手實踐

        目前大家可以通過 Helm Charts (感謝分享github感謝原創(chuàng)分享者/apache/apisix-helm-chart) 得方式來進行 APISIX Ingress 得部署。通過一條命令,就可以同時把 Apache APISIX 以及 APISIX Ingress,包括 Apache APISIX 所需要用到得 etcd 全部部署好,步驟非常簡單。

        實踐場景一:流量切分

        通過使用 APISIX Ingress 可以實現按比例進行流量切分得效果,具體操作如下:

        步驟一:配置 APISIX Upstream 步驟二:配置 APISIX Route

        通過在 backends 中去配置 subset 和 weight,來實現用戶請求流量進入時得分流。如下圖示例就是 90% 得流量會進入到 v1 中,10% 得流量進入到 v2 中。

        通過以上兩步,就可以十分方便地按比例進行流量切分,實現類似灰度發(fā)布等場景需求。

        更多具體操作細節(jié)也可參考:Apache APISIX Ingress Controller 中得流量切分(感謝分享特別apiseven感謝原創(chuàng)分享者/zh/blog/traffic-split-in-apache-apisix-ingress-controller)

        實踐場景二:配置認證

        如果想在 APISIX Ingress 中為某些路由配置 Basic Auth,可以參考如下操作:

        步驟一:創(chuàng)建 APISIX Consumer 資源

        如前文所提到得,可以在 APISIX Consumer 配置中增加 basicAuth,并為其指定用戶名和密碼。

        步驟二:配置 APISIX Route,增加認證相關參數

        在自定義資源 APISIX Route 中,通過在后端添加 authentication,將其開啟并指定認證類型即可。

        通過以上步驟,就可以實現使用 Consumer 去完成相關配置認證。

        實踐場景三:K8s 資源擴展

        正如我們在開頭提到過得,APISIX Ingress 不僅支持自定義資源,還同時支持 K8s 原生得 Ingress 資源。

        如上圖是 K8s Ingress 資源。通常情況下如果想要在資源上做 rewrite,可以通過增加 annotation 配置屬性。這樣當用戶攜帶 httpbin.org 請求時,就可以通過路徑 /sample 將它重定向到 /ip。

        當上述需求使用 APISIX Ingress 時,只需在 Ingress 增加一個 kubernetes.io/ingress.class: apisix,去指定 APISIX Ingress Controller 去監(jiān)聽這個資源,同時通過配置 k8s.apisix.apache.org/rewrite-target: "/ip",就可以完成重定向到 /ip 路徑。

        以上示例只是目前 APISIX Ingress 對于原生 K8s Ingress 支持得一種方式,更多示例大家可以查看具體文檔 (感謝分享apisix.apache.org/docs/ingress-controller/practices/proxy-the-httpbin-service-with-ingress) 進行參考使用。

        未來規(guī)劃

        之后 APISIX Ingress 將會繼續(xù)在功能與生態(tài)上進行更新,目前階段已經完成了 APISIX Ingress 與 Cert-manager 集成,后續(xù)將逐步實現以下目標:

          完成 Kubernetes V1.22+ 與 CRD V1 版本得適配支持(已經完成,即將在 APISIX Ingress V1.3 版本 中發(fā)布)

          支持 Gateway API(預計在 Q4 階段實現)

          擴展新架構,以便于用戶在不需要使用 etcd 得情況下,可以正常使用 APISIX Ingress

          豐富產品生態(tài),擴展 APISIX Ingress 社區(qū)

        蕞后也希望大家能夠多多地參與到項目中來,比如每兩周得周三下午 2 點都會有一次 APISIX Ingress 社區(qū)會議,會跟大家同步一下當前得項目進展或者遇到得問題。大家可以持續(xù)感謝對創(chuàng)作者的支持 Apache APISIX 視頻號,屆時可以直接參與社區(qū)會議感謝閱讀本文!。

        更多關于 APISIX Ingress 社區(qū)會議可參考:感謝分享github感謝原創(chuàng)分享者/apache/apisix-ingress-controller/issues/614

        關于 Apache APISIX

        Apache APISIX 是一個動態(tài)、實時、高性能得開源 API 網關,提供負載均衡、動態(tài)上游、灰度發(fā)布、服務熔斷、身份認證、可觀測性等豐富得流量管理功能。Apache APISIX 可以幫忙企業(yè)快速、安全得處理 API 和微服務流量,包括網關、Kubernetes Ingress 和服務網格等。

        Apache APISIX GitHub:感謝分享github感謝原創(chuàng)分享者/apache/apisix

        Apache APISIX 自己:感謝分享apisix.apache.org/

        Apache APISIX 文檔:感謝分享apisix.apache.org/zh/docs/apisix/getting-started

        技術來自互聯網及架構實踐文章,歡迎通過公眾號菜單「聯系我們」進行投稿。

        高可用架構

        改變互聯網得構建方式

         
        (文/馮婭茵)
        打賞
        免責聲明
        本文為馮婭茵推薦作品?作者: 馮婭茵。歡迎轉載,轉載請注明原文出處:http://m.sneakeraddict.net/news/show-197399.html 。本文僅代表作者個人觀點,本站未對其內容進行核實,請讀者僅做參考,如若文中涉及有違公德、觸犯法律的內容,一經發(fā)現,立即刪除,作者需自行承擔相應責任。涉及到版權或其他問題,請及時聯系我們郵件:weilaitui@qq.com。
         

        Copyright ? 2016 - 2023 - 企資網 48903.COM All Rights Reserved 粵公網安備 44030702000589號

        粵ICP備16078936號

        微信

        關注
        微信

        微信二維碼

        WAP二維碼

        客服

        聯系
        客服

        聯系客服:

        在線QQ: 303377504

        客服電話: 020-82301567

        E_mail郵箱: weilaitui@qq.com

        微信公眾號: weishitui

        客服001 客服002 客服003

        工作時間:

        周一至周五: 09:00 - 18:00

        反饋

        用戶
        反饋

        日韩爆乳一区二区无码| 中文字幕视频一区| 91中文在线视频| 夜夜添无码一区二区三区| 精品无码人妻一区二区三区品| 中文字幕无码精品三级在线电影 | 无码国产精品一区二区免费16| 小泽玛丽无码视频一区| 无码国产精品一区二区免费式影视| 国产成人午夜无码电影在线观看 | 未满小14洗澡无码视频网站| 中文字幕乱码免费视频| 亚洲AV无码国产精品麻豆天美| 国色天香中文字幕在线视频 | 亚洲色成人中文字幕网站| 亚洲国产精品无码成人片久久| 色噜噜亚洲精品中文字幕| 无码国产精品一区二区免费3p| 视频一区二区中文字幕| 日韩人妻无码精品无码中文字幕| 中文字幕人妻无码一夲道| 中文字幕国产在线| 超清中文乱码字幕在线观看| 国产AV无码专区亚洲AV男同| 国精品无码一区二区三区在线蜜臀| 亚洲欧美精品一中文字幕| 日韩精品无码AV成人观看| 中文无码熟妇人妻AV在线| 久久无码国产| 中文字幕人妻无码一夲道 | 色综合久久精品中文字幕首页| 国产AV无码专区亚洲精品| 国产成人精品一区二区三区无码| 亚洲日韩v无码中文字幕| 极品粉嫩嫩模大尺度无码视频| 无码人妻黑人中文字幕| 亚洲日本中文字幕天堂网| 中文字幕在线无码一区| 高h纯肉无码视频在线观看| 亚洲av永久无码精品秋霞电影影院 | 中文字幕视频在线免费观看|