国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

一篇帶給你Apache APISIX 初體驗

網絡 通信技術
Apache APISIX 是一個基于 OpenResty 和 Etcd 實現的動態、實時、高性能的 API 網關,目前已經進入 Apache 進行孵化。提供了豐富的流量管理功能。

Apache APISIX 是一個基于 OpenResty 和 Etcd 實現的動態、實時、高性能的 API 網關,目前已經進入 Apache 進行孵化。提供了豐富的流量管理功能,如負載均衡、動態路由、動態 upstream、A/B測試、金絲雀發布、限速、熔斷、防御惡意攻擊、認證、監控指標、服務可觀測性、服務治理等。可以使用 APISIX 來處理傳統的南北流量以及服務之間的東西向流量。

與傳統 API 網關相比,APISIX 具有動態路由和熱加載插件功能,避免了配置之后的 reload 操作,同時 APISIX 支持 HTTP(S)、HTTP2、Dubbo、QUIC、MQTT、TCP/UDP 等更多的協議。而且還內置了 Dashboard,提供強大而靈活的界面。同樣也提供了豐富的插件支持功能,而且還可以讓用戶自定義插件。

上圖是 APISIX 的架構圖,整體上分成數據面和控制面兩個部分,控制面用來管理路由,主要通過 etcd 來實現配置中心,數據面用來處理客戶端請求,通過 APISIX 自身來實現,會不斷去 watch etcd 中的 route、upstream 等數據。

APISIX Ingress

同樣作為一個 API 網關,APISIX 也支持作為 Kubernetes 的一個 Ingress 控制器進行使用。APISIX Ingress 在架構上分成了兩部分,一部分是 APISIX Ingress Controller,作為控制面它將完成配置管理與分發。另一部分 APISIX(代理) 負責承載業務流量。

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

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

從上圖可以看出 APISIX Ingress 采用了數據面與控制面的分離架構,所以用戶可以選擇將數據面部署在 K8s 集群內部或外部。但 Ingress Nginx 是將控制面和數據面放在了同一個 Pod 中,如果 Pod 或控制面出現一點閃失,整個 Pod 就會掛掉,進而影響到業務流量。這種架構分離,給用戶提供了比較方便的部署選擇,同時在業務架構調整場景下,也方便進行相關數據的遷移與使用。

APISIX Ingress 控制器目前支持的核心特性包括:

  • 全動態,支持高級路由匹配規則,可與 Apache APISIX 官方 50 多個插件 & 客戶自定義插件進行擴展使用
  • 支持 CRD,更容易理解聲明式配置
  • 兼容原生 Ingress 資源對象
  • 支持流量切分
  • 服務自動注冊發現,無懼擴縮容
  • 更靈活的負載均衡策略,自帶健康檢查功能
  • 支持 gRPC 與 TCP 4 層代理

安裝

我們這里在 Kubernetes 集群中來使用 APISIX,可以通過 Helm Chart 來進行安裝,首先添加官方提供的 Helm Chart 倉庫:

  1. ➜ helm repo add apisix https://charts.apiseven.com 
  2. ➜ helm repo update 

由于 APISIX 的 Chart 包中包含 dashboard 和 ingress 控制器的依賴,我們只需要在 values 中啟用即可安裝 ingress 控制器了:

  1. ➜ helm fetch apisix/apisix 
  2. ➜ tar -xvf apisix-0.7.2.tgz 
  3. ➜ mkdir -p apisix/ci 

在 apisix/ci 目錄中新建一個用于安裝的 values 文件,內容如下所示:

  1. # ci/prod.yaml 
  2. apisix: 
  3.   enabled: true 
  4.  
  5.   nodeSelector:  # 固定在node2節點上 
  6.     kubernetes.io/hostname: node2 
  7.  
  8. gateway: 
  9.   type: NodePort 
  10.   externalTrafficPolicy: Cluster 
  11.   http: 
  12.     enabled: true 
  13.     servicePort: 80 
  14.     containerPort: 9080 
  15.  
  16. etcd: 
  17.   enabled: true  # 會自動創建3個節點的etcd集群 
  18.   replicaCount: 1  # 多副本需要修改下模板,這里暫時運行一個etcd pod 
  19.  
  20. dashboard: 
  21.   enabled: true 
  22.  
  23. ingress-controller: 
  24.   enabled: true 
  25.   config: 
  26.     apisix: 
  27.       serviceName: apisix-admin 
  28.       serviceNamespace: apisix  # 指定命名空間,如果不是 ingress-apisix 需要重新指定 

經測試官方的 Helm Chart 包對 etcd 多節點集群支持不是很好,我測試跑3個節點會出問題,應該還需要重新修改模板去兼容,另外對外部的 etcd tls 集群兼容度也不好,比如 dashboard 的 Chart 需要自己修改模板去支持 tls,所以這里我們測試先改成 1 個副本的 etcd 集群。

APISIX 需要依賴 etcd,默認情況下 Helm Chart 會自動安裝一個3副本的 etcd 集群,需要提供一個默認的 StorageClass,如果你已經有默認的存儲類則可以忽略下面的步驟,這里我們安裝一個 nfs 的 provisioner,用下面的命令可以安裝一個默認的 StorageClass:

  1. ➜ helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/ 
  2. ➜ helm upgrade --install nfs-subdir-external-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner \ 
  3. --set nfs.server=192.168.31.31 \  # 指定nfs地址 
  4. --set nfs.path=/var/lib/k8s/data \  # nfs路徑 
  5. --set image.repository=cnych/nfs-subdir-external-provisioner \ 
  6. --set storageClass.defaultClass=true -n kube-system 

安裝完成后會自動創建一個 StorageClass:

  1. ➜ kubectl get sc 
  2. NAME                   PROVISIONER                                     RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE 
  3. nfs-client (default)   cluster.local/nfs-subdir-external-provisioner   Delete          Immediate              true                   35s 

然后直接執行下面的命令進行一鍵安裝:

  1. ➜ helm upgrade --install apisix ./apisix -f ./apisix/ci/prod.yaml -n apisix 
  2. Release "apisix" does not exist. Installing it now. 
  3. NAME: apisix 
  4. LAST DEPLOYED: Thu Dec 30 16:28:38 2021 
  5. NAMESPACE: apisix 
  6. STATUS: deployed 
  7. REVISION: 1 
  8. NOTES: 
  9. 1. Get the application URL by running these commands: 
  10.   export NODE_PORT=$(kubectl get --namespace apisix -o jsonpath="{.spec.ports[0].nodePort}" services apisix-gateway) 
  11.   export NODE_IP=$(kubectl get nodes --namespace apisix -o jsonpath="{.items[0].status.addresses[0].address}") 
  12.   echo http://$NODE_IP:$NODE_PORT 

正常就可以成功部署 apisix 了:

  1. ➜ kubectl get pods -n apisix 
  2. NAME                                         READY   STATUS    RESTARTS   AGE 
  3. apisix-dashboard-b69d5c768-r6tqk             1/1     Running   0          85m 
  4. apisix-etcd-0                                1/1     Running   0          90m 
  5. apisix-fb8cdb569-wz9gq                       1/1     Running   0          87m 
  6. apisix-ingress-controller-7d5bbf5dd5-r6khq   1/1     Running   0          85m 
  7. ➜ kubectl get svc -n apisix 
  8. NAME                        TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)             AGE 
  9. apisix-admin                ClusterIP   10.97.108.252    <none>        9180/TCP            3h 
  10. apisix-dashboard            NodePort    10.108.202.136   <none>        80:31756/TCP        3h 
  11. apisix-etcd                 ClusterIP   10.107.150.100   <none>        2379/TCP,2380/TCP   3h 
  12. apisix-etcd-headless        ClusterIP   None             <none>        2379/TCP,2380/TCP   3h 
  13. apisix-gateway              NodePort    10.97.214.188    <none>        80:32200/TCP        3h 
  14. apisix-ingress-controller   ClusterIP   10.103.176.26    <none>        80/TCP              3h 

測試

現在我們可以為 Dashboard 創建一個路由規則,新建一個如下所示的 ApisixRoute 資源對象即可:

  1. apiVersion: apisix.apache.org/v2beta2 
  2. kind: ApisixRoute 
  3. metadata: 
  4.   name: dashboard 
  5.   namespace: apisix 
  6. spec: 
  7.   http: 
  8.     - name: root 
  9.       match: 
  10.         hosts: 
  11.           - apisix.qikqiak.com 
  12.         paths: 
  13.           - "/*" 
  14.       backends: 
  15.       - serviceName: apisix-dashboard 
  16.         servicePort: 80 

創建后 apisix-ingress-controller 會將上面的資源對象通過 admin api 映射成 APISIX 中的配置:

  1. ➜ kubectl get apisixroute -n apisix 
  2. NAME        HOSTS                    URIS     AGE 
  3. dashboard   ["apisix.qikqiak.com"]   ["/*"]   75m 

所以其實我們的訪問入口是 APISIX,而 apisix-ingress-controller 只是一個用于監聽 crds,然后將 crds 翻譯成 APISIX 的配置的工具而已,現在就可以通過 apisix-gateway 的 NodePort 端口去訪問我們的 dashboard 了:

默認登錄用戶名和密碼都是 admin,登錄后在路由菜單下正常可以看到上面我們創建的這個 dashboard 的路由信息:

點擊更多下面的查看就可以看到在 APISIX 下面真正的路由配置信息:

所以我們要使用 APISIX,也一定要理解其中的路由 Route 這個概念,路由(Route)是請求的入口點,它定義了客戶端請求與服務之間的匹配規則,路由可以與服務(Service)、上游(Upstream)關聯,一個服務可對應一組路由,一個路由可以對應一個上游對象(一組后端服務節點),因此,每個匹配到路由的請求將被網關代理到路由綁定的上游服務中。

理解了路由后自然就知道了我們還需要一個上游 Upstream 進行關聯,這個概念和 Nginx 中的 Upstream 基本是一致的,在上游菜單下可以看到我們上面創建的 dashboard 對應的上游服務:

其實就是將 Kubernetes 中的 Endpoints 映射成 APISIX 中的 Upstream,然后我們可以自己在 APISIX 這邊進行負載。

APISIX 提供的 Dashboard 功能還是非常全面的,我們甚至都可以直接在頁面上進行所有的配置,包括插件這些,非常方便。

當然還有很多其他高級的功能,比如流量切分、請求認證等等,這些高級功能在 crds 中去使用則更加方便了,當然也是支持原生的 Ingress 資源對象的,關于 APISIX 的更多高級用法,后續再進行說明。

 

責任編輯:姜華 來源: k8s技術圈
相關推薦

2021-07-12 06:11:14

SkyWalking 儀表板UI篇

2021-07-08 07:30:13

Webpack 前端Tree shakin

2021-10-28 08:51:53

GPIO軟件框架 Linux

2021-04-23 08:59:35

ClickHouse集群搭建數據庫

2022-02-25 15:50:05

OpenHarmonToggle組件鴻蒙

2021-05-08 08:36:40

ObjectString前端

2021-04-14 07:55:45

Swift 協議Protocol

2023-03-13 09:31:04

2022-04-29 14:38:49

class文件結構分析

2022-03-22 09:09:17

HookReact前端

2021-01-28 08:55:48

Elasticsear數據庫數據存儲

2021-06-21 14:36:46

Vite 前端工程化工具

2021-04-08 11:00:56

CountDownLaJava進階開發

2022-02-17 08:53:38

ElasticSea集群部署

2023-03-29 07:45:58

VS編輯區編程工具

2021-07-21 09:48:20

etcd-wal模塊解析數據庫

2021-04-01 10:51:55

MySQL鎖機制數據庫

2021-03-12 09:21:31

MySQL數據庫邏輯架構

2024-06-13 08:34:48

2021-04-14 14:16:58

HttpHttp協議網絡協議
點贊
收藏

51CTO技術棧公眾號

欧美日韩精品免费观看视一区二区| 黄色片在线看| 欧美三级第一页| 亚洲视频在线视频| 中国av在线播放| 狠狠色狠狠色综合日日小说| 欧美男女交配视频| 久久综合色婷婷| www插插插无码免费视频网站| 亚洲性色视频| 91人成网站www| 亚洲资源网你懂的| 色噜噜狠狠狠综合曰曰曰88av| 国产羞羞视频在线播放| 欧美一卡二卡三卡四卡| а√资源新版在线天堂| 欧美一区二区三区在线看| 国产区在线看| 精品少妇一区二区| 一个人www视频在线免费观看| 亚洲精品v欧美精品v日韩精品| 任你弄在线视频免费观看| 日韩欧美亚洲一区二区| 欧美xxxx做受欧美88bbw| 亚洲激情视频在线| 成人日韩在线观看| 久久久av亚洲男天堂| 国产另类在线| 国产免费久久av| 亚洲国产国产亚洲一二三| 欧美日韩亚洲在线| 麻豆91小视频| 日本国产中文字幕| proumb性欧美在线观看| 男人透女人免费视频| 欧美高清在线视频| 米奇在线777| 日韩欧美999| 黄网站免费在线播放| 精品国产一区二区三区av性色| 末成年女av片一区二区下载| 亚洲色图13p| 国产情侣一区在线| 国产精品免费视频久久久| 国内视频精品| 国产高清精品软男同| 91亚洲资源网| 探花国产精品| 6080日韩午夜伦伦午夜伦| 小h片在线观看| 欧美激情a在线| 成人三级视频| 狠狠久久综合婷婷不卡| 国产在线国偷精品免费看| 国产xxxxx视频| 婷婷激情综合网| 欧洲精品二区| 欧美大片大片在线播放| 婷婷综合视频| 欧美激情亚洲天堂| 亚洲伊人伊色伊影伊综合网| 在线观看中文字幕的网站| 欧美大片va欧美在线播放| 希岛爱理一区二区三区| 婷婷亚洲婷婷综合色香五月| 国产欧美一区二区精品性色| 国产一级二级三级在线观看| 亚洲精品美女久久| 日韩大尺度在线观看| 久久精品国产精品青草色艺| 久久麻豆一区二区| 午夜在线免费观看视频| 久久91精品国产| 久久久精品午夜少妇| 国产极品粉嫩福利姬萌白酱| 在线看不卡av| 好吊妞视频这里有精品| 色综合电影网| 亚洲小说欧美激情另类| 蜜桃视频在线观看播放| 国产欧洲精品视频| 波波电影院一区二区三区| 嫩草研究院在线观看| xxxx欧美18另类的高清| 国内精品久久久久久久97牛牛| 久久久久人妻精品一区三寸| 欧美精品国产精品| 国产精品免费大片| 久久精品无码中文字幕| 在线不卡中文字幕播放| 欧美日韩高清| caoporn超碰97| 亚洲精品丝袜日韩| 在线成人国产| 成人在线观看视频app| 久热精品视频在线观看一区| 中文一区二区| 在线观影网站| 97在线免费观看| 久久av老司机精品网站导航| 欧美zzoo| 国产精品96久久久久久| 91亚洲国产成人精品一区二区三| 黑人精品视频| 风间由美一区二区三区| 亚洲不卡一区二区三区| 亚洲国产中文字幕| 日本成人伦理电影| 成人免费看片网址| 国产精品美女www爽爽爽| 国产粉嫩在线观看| 99久久精品免费看国产一区二区三区 | 伊人久久大香线蕉av一区| 亚洲欧美成人一区| 亚洲高清视频在线| 亚洲网站三级| 免费观看成人高| 亚洲大片在线观看| 99久久婷婷国产综合精品青牛牛 | 国产精品免费视频久久久| 成人av网站免费| 多野结衣av一区| 久久狠狠久久综合桃花| 91久久国产综合久久| 成人三级视频| 500福利第一精品导航| 久久人人爽人人爽人人片av高清| 国产a视频精品免费观看| 精精国产xxx在线视频app| 婷婷久久青草热一区二区| 在线综合视频播放| 宅男噜噜噜66一区二区 | 欧美私人网站| 波多野结衣精品久久| 亚洲国产精品久久久久秋霞影院 | 亚洲精品自产拍| 久久国产三级精品| 蜜桃av在线播放| 中文字幕精品一区日韩| 亚洲成av人片在线观看香蕉| 免费欧美在线视频| 芒果视频成人app| 高清欧美精品xxxxx| 精品国产一区二区三区在线观看 | 欧美性高跟鞋xxxxhd| 伊人色**天天综合婷婷| 三级黄视频在线观看| 99久久伊人精品影院| 欧美狂野另类xxxxoooo| 美女脱光内衣内裤视频久久影院| 91九色美女在线视频| 日本国产中文字幕| 美女av一区二区三区 | 日韩av一级大片| 亚洲香蕉成人av网站在线观看 | 国产 高清 精品 在线 a| 欧美另类高清zo欧美| 天堂成人免费av电影一区| 美女扒开腿让男人桶爽久久软| 综合视频免费看| 大胆欧美人体视频| 一区二区三区高清| 日韩视频一区二区三区在线播放免费观看| 精品视频在线一区二区| avove在线观看| 欧美激情奇米色| 精品人伦一区二区三区蜜桃网站| 亚洲精品看片| 精品视频在线一区二区在线| 色成人亚洲网| 国产一区不卡在线观看| 亚洲午夜未满十八勿入免费观看全集| 国产日韩欧美一区二区三区综合| 日韩欧美自拍| 超碰在线资源| 天天综合网久久| 好看的日韩精品| 久久久极品av| 欧美午夜性色大片在线观看| 蜜臀精品一区二区三区在线观看 | 最新中文字幕免费视频| 国产日韩精品视频| 欧美大肚乱孕交hd孕妇| 久久亚洲免费视频| 欧美jizzhd精品欧美巨大免费| 欧美少妇精品| 少妇激情av一区二区三区| 日韩福利二区| 久久久欧美精品| 欧美一区二区大片| 中文字幕一区av| 日韩福利视频网| 超碰地址久久| 欧美一卡二卡| 国产一级激情| 亚洲欧美日韩不卡一区二区三区| 91干在线观看| 亚洲品质视频自拍网| 在线视频国产一区| 国产精品久久久久一区二区三区|