国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

云服務器|WEB服務器|FTP服務器|郵件服務器|虛擬主機|服務器安全|DNS服務器|服務器知識|Nginx|IIS|Tomcat|

服務器之家 - 服務器技術 - 服務器知識 - 如何快速的在 Kubernetes 上部署云原生微服務網關 APISIX

如何快速的在 Kubernetes 上部署云原生微服務網關 APISIX

2021-09-08 22:17奇妙的Linux世界 服務器知識

本文主要簡述了幾種網關的區別,思考了 APISIX 主要能幫助我們解決什么問題,最后在 Kubernetes 上進行了實踐。

如何快速的在 Kubernetes 上部署云原生微服務網關 APISIX

 1、幾種常見網關的比較

  •  Nginx, 模塊化設計的反向代理軟件,C 語言開發
  •  OpenResty, 以 Nginx 為核心的 Web 開發平臺,可以解析執行 Lua 腳本
  •  Kong, OpenResty 的一個應用,是一個 API 網關,具有 API 管理和請求代理的功能,使用 PostgreSQL 存儲
  •  APISIX, 替換了 Kong 的 PostgreSQL 為 Etcd,基于 Nginx 的核心庫實現

APISIX 的優勢在于提供了 API 的管理和擴展能力,讓網關不再僅僅轉發服務,而是可以被配置、定制化。相較于 Nginx,APISIX 使用的是動態路由,避免了配置之后 reload 產生的風險。同時,APISIX 支持 HTTP(S)、HTTP2、Dubbo、QUIC、MQTT、TCP/UDP 等更多的協議,具有更好的使用生態。

如何快速的在 Kubernetes 上部署云原生微服務網關 APISIX

上面是 APISIX 的架構圖,數據面處理客戶端請求,控制面管理路由。

2、APISIX 能解決什么問題

  •  邊緣路由

機房對外暴露的訪問入口 IP 數量,通常是極少的,但是卻支撐了很多個服務。比如,訪問的 IP 是 1.2.3.4,但卻同時提供了 a.domain.com、b.domain.com 的訪問服務。這就需要用到邊緣路由,邊緣路由會將不同域名的訪問,轉發到不同的內網地址。

APISIX 中三種方式可以注冊邊緣路由,dashboard、ingress-controller、admin api。

  •  基礎網關能力

網關的功能不限于轉發流量,更重要的是限流、熔斷等。

APISIX 內置了很多插件,提供 APM、日志、熔斷、鑒權、證書管理、故障注入等功能。同時,也支持拖拽組合新的插件、開發新插件以滿足業務需求。

  •  Serverless

APISIX 通過插件的方式提供 Serverless,目前僅支持 Lua。但 APIGateway + Serverless 的組合,極具想象力。

利用 Serverless 可以快速對外提供無服務的 API,粘合各種服務,也可以對外直接提供功能服務。

  •  灰度發布

由于對網關層進行了控制,APISIX 允許用戶通過配置權重控制流量的轉發行為,可以用來做灰度發布使用。

3、Kubernetes 上安裝 APISIX

(1)添加 Helm 源

  •  添加 Helm 源 
  1. $ helm repo add apisix https://charts.apiseven.com  
  2. $ helm repo update 
  •  查找 Chart 包 
  1. $ helm search repo apisix  
  2. NAME                             CHART VERSION APP VERSION DESCRIPTION  
  3. apisix/apisix                    0.3.5         2.7.0       A Helm chart for Apache APISIX  
  4. apisix/apisix-dashboard          0.1.5         2.7.0       A Helm chart for Apache APISIX Dashboard  
  5. apisix/apisix-ingress-controller 0.5.0         1.0.0       Apache APISIX Ingress Controller for Kubernetes 

(2)安裝 APISIX

  •  安裝 APISIX 
  1. $ helm install apisix apisix/apisix  --set gateway.type=NodePort --set admin.allow.ipList="{0.0.0.0/0}"  -n apisix --create-namespace 
  •  查看入口地址 
  1. $ export NODE_PORT=$(kubectl get --namespace apisix -o jsonpath="{.spec.ports[0].nodePort}" services apisix-gateway)  
  2. $ export NODE_IP=$(kubectl get nodes --namespace apisix -o jsonpath="{.items[0].status.addresses[0].address}" 
  3. $ echo http://$NODE_IP:$NODE_PORT  
  4. http://1.1.1.1:32462 

這里的入口地址是后端服務的入口地址,如果是生成環境,應該使用 LoadBalancer 提供的地址。

  •  查看 apisix-admin 接口 key 
  1. $ export POD_NAME=$(kubectl get pods --namespace apisix -l "app.kubernetes.io/instance=apisix,app.kubernetes.io/name=apisix" -o jsonpath="{.items[0].metadata.name}") 
  2. $ kubectl -n apisix exec -it $POD_NAME cat conf/config.yaml |grep key   
  3.   admin_key:  
  4.       key: edd1c9f034335f136f87ad84b625c8f1  
  5.       key: 4054f7cf07e344346cd3f287985e76a2 

第一個 key 是 admin,第二個 key 是 viewer。這里的 key 可以用來通過 admin api 來配置 APISIX,給其他系統集成 APISIX 提供了入口。

(3)安裝 Dashboard

  •  安裝 Dashboard 
  1. $ helm install apisix-dashboard apisix/apisix-dashboard -n apisix --create-namespace 

默認賬戶是:admin 默認密碼是:admin

  •  查看 Dashboard 訪問入口 
  1. $ export NODE_PORT=$(kubectl get --namespace apisix -o jsonpath="{.spec.ports[0].nodePort}" services apisix-gateway)  
  2. $ export NODE_IP=$(kubectl get nodes --namespace apisix -o jsonpath="{.items[0].status.addresses[0].address}" 
  3. $ echo http://$NODE_IP:$NODE_PORT  
  4. http://1.1.1.1:31501 

(4)安裝 ingress-controller

  •  安裝 ingress-controller 
  1. $ helm install apisix-ingress-controller apisix/apisix-ingress-controller   --set config.apisix.baseURL=http://apisix-admin:9180/apisix/admin  --set config.apisix.adminKey=edd1c9f034335f136f87ad84b625c8f1  -n apisix 

這里就會需要設置上面獲取到的 admin key, 實際上 ingress-controller 也是通過調用 admin api 來配置路由的。

4、創建服務測試

前面提到 APISIX 通過 admin api 配置路由,有三種方式可以操作。這里主要驗證使用 Dashboard 和 Ingress 兩種方式:

  •  創建一個服務 
  1. $ kubectl create deployment web --image=gcr.io/google-samples/hello-app:1.0 
  •  暴露服務 
  1. $ kubectl expose deployment web --type=NodePort --port=8080 
  •  查看服務

$ kubectl get service web

NAME   TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE

web    NodePort   10.233.58.113   <none>        8080:30572/TCP   28d

(1)Dashboard 配置路由

  •  新建一個上游服務

這里需要填入上面創建的集群訪問地址:web.default.svc.cluster.local

如何快速的在 Kubernetes 上部署云原生微服務網關 APISIX

  •  新建一個路由

如何快速的在 Kubernetes 上部署云原生微服務網關 APISIX

點擊下一步之后,選擇上面創建的服務 web,相關的參數就會自動填充。

如何快速的在 Kubernetes 上部署云原生微服務網關 APISIX

  •  訪問測試

如何快速的在 Kubernetes 上部署云原生微服務網關 APISIX

(2)Ingress 配置路由

  •  創建一個 ApisixRoute 路由

雖然這里部署的是 ingress-controller 組件,但是使用時創建的是 ApisixRoute 對象。

  1. apiVersion: apisix.apache.org/v1   
  2. kind: ApisixRoute   
  3. metadata:   
  4.   name: web-route   
  5. spec:  
  6.   http:  
  7.   - name: web  
  8.     match:  
  9.       hosts:  
  10.       - dev4.chenshaowen.com  
  11.       paths:  
  12.       - "/router-web/*"  
  13.     backend:  
  14.      serviceName: web  
  15.      servicePort: 8080 
  •  訪問測試

如何快速的在 Kubernetes 上部署云原生微服務網關 APISIX

  •  查看創建的路由    

如何快速的在 Kubernetes 上部署云原生微服務網關 APISIX

可以發現路由是被 ingress-controller 接管的,人工不要編輯。

  •  查看服務 

如何快速的在 Kubernetes 上部署云原生微服務網關 APISIX

可以看到服務主要是由四個后端提供。

  •  查看服務 Pod 的 IP 
  1. $ kubectl get pod  -o wide  
  2. NAME                   READY   STATUS    RESTARTS   AGE   IP              NODE    NOMINATED NODE   READINESS GATES  
  3. web-79d88c97d6-2sdlj   1/1     Running   0          27d   10.233.105.34   node4   <none>           <none>  
  4. web-79d88c97d6-7bfbb   1/1     Running   0          27d   10.233.105.32   node4   <none>           <none>  
  5. web-79d88c97d6-hccqk   1/1     Running   0          27d   10.233.105.33   node4   <none>           <none>  
  6. web-79d88c97d6-mh9gz   1/1     Running   0          28d   10.233.105.22   node4   <none>           <none> 

APISIX 會將 Pod 的 IP 地址直接作為流量后端,而不需要經過 Service 的轉發,這有別于 Kubernetes 的服務轉發、負載均衡機制。

5、總結

本文主要簡述了幾種網關的區別,思考了 APISIX 主要能幫助我們解決什么問題,最后在 Kubernetes 上進行了實踐。內容如下:

  •  APISIX 是基于 Nginx 網絡庫實現的 API 網關應用,使用 Etcd 作為存儲后端
  •  APISIX 能作為邊緣路由使用,其動態特性,避免了 Nginx reload 帶來的抖動
  •  APISIX 提供了 admin api 管理路由,有三種方式可以進行配置
  •  Kubernetes 下的 APISIX 跳過了 Kubernetes Service 直接將流量轉發到 Pod IP

6、參考

  •  https://github.com/apache/apisix
  •  https://bbs.huaweicloud.com/blogs/125686
  •  https://github.com/apache/apisix-ingress-controller/blob/master/docs/en/latest/concepts/apisix_route.md

原文鏈接:https://mp.weixin.qq.com/s/4vGk4vu9a4WLjJLQwfBcEg

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25
主站蜘蛛池模板: 伊人色综合网 | 精品日韩一区二区三区 | 日日日日干干干干 | 亚洲欧美一区二区三区情侣bbw | 国产精品美女久久久久久久久久久 | 依人久久久 | 免费观看在线毛片 | 一区二区av在线 | 6080夜射猫 | 中文字幕视频在线观看 | 国产精品久久久久久一区二区三区 | 黄一区| 中国久久久 | 久久黄色网 | 91精品观看 | 91社区在线观看 | 99国产精品99久久久久久 | 日本久久久久久 | www.在线播放| 国产电影一区二区三区 | 欧美精品一区二区三区蜜桃视频 | 日韩av在线中文字幕 | 午夜色播| 国产精品久久久久久久久久久久久久 | 在线观看av网站 | 国产一级一级国产 | 欧美一区二区三区在线观看视频 | 中文字幕视频一区 | 中文字幕av一区二区三区 | 国产高清在线看 | 国产麻豆乱码精品一区二区三区 | 亚洲自啪| 国产免费一区二区三区最新6 | 国产欧美日韩一区二区三区四区 | 亚洲综合色成在线播放 | 欧美色涩 | 欧美亚洲一区 | 99riav在线| 日韩精品影院 | 国产精品久久久久久久久久妞妞 | 97超碰免费 |