激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

云服務(wù)器|WEB服務(wù)器|FTP服務(wù)器|郵件服務(wù)器|虛擬主機(jī)|服務(wù)器安全|DNS服務(wù)器|服務(wù)器知識(shí)|Nginx|IIS|Tomcat|

服務(wù)器之家 - 服務(wù)器技術(shù) - 服務(wù)器知識(shí) - 如何快速的在 Kubernetes 上部署云原生微服務(wù)網(wǎng)關(guān) APISIX

如何快速的在 Kubernetes 上部署云原生微服務(wù)網(wǎng)關(guān) APISIX

2021-09-08 22:17奇妙的Linux世界 服務(wù)器知識(shí)

本文主要簡(jiǎn)述了幾種網(wǎng)關(guān)的區(qū)別,思考了 APISIX 主要能幫助我們解決什么問(wèn)題,最后在 Kubernetes 上進(jìn)行了實(shí)踐。

如何快速的在 Kubernetes 上部署云原生微服務(wù)網(wǎng)關(guān) APISIX

 1、幾種常見網(wǎng)關(guān)的比較

  •  Nginx, 模塊化設(shè)計(jì)的反向代理軟件,C 語(yǔ)言開發(fā)
  •  OpenResty, 以 Nginx 為核心的 Web 開發(fā)平臺(tái),可以解析執(zhí)行 Lua 腳本
  •  Kong, OpenResty 的一個(gè)應(yīng)用,是一個(gè) API 網(wǎng)關(guān),具有 API 管理和請(qǐng)求代理的功能,使用 PostgreSQL 存儲(chǔ)
  •  APISIX, 替換了 Kong 的 PostgreSQL 為 Etcd,基于 Nginx 的核心庫(kù)實(shí)現(xiàn)

APISIX 的優(yōu)勢(shì)在于提供了 API 的管理和擴(kuò)展能力,讓網(wǎng)關(guān)不再僅僅轉(zhuǎn)發(fā)服務(wù),而是可以被配置、定制化。相較于 Nginx,APISIX 使用的是動(dòng)態(tài)路由,避免了配置之后 reload 產(chǎn)生的風(fēng)險(xiǎn)。同時(shí),APISIX 支持 HTTP(S)、HTTP2、Dubbo、QUIC、MQTT、TCP/UDP 等更多的協(xié)議,具有更好的使用生態(tài)。

如何快速的在 Kubernetes 上部署云原生微服務(wù)網(wǎng)關(guān) APISIX

上面是 APISIX 的架構(gòu)圖,數(shù)據(jù)面處理客戶端請(qǐng)求,控制面管理路由。

2、APISIX 能解決什么問(wèn)題

  •  邊緣路由

機(jī)房對(duì)外暴露的訪問(wèn)入口 IP 數(shù)量,通常是極少的,但是卻支撐了很多個(gè)服務(wù)。比如,訪問(wèn)的 IP 是 1.2.3.4,但卻同時(shí)提供了 a.domain.com、b.domain.com 的訪問(wèn)服務(wù)。這就需要用到邊緣路由,邊緣路由會(huì)將不同域名的訪問(wèn),轉(zhuǎn)發(fā)到不同的內(nèi)網(wǎng)地址。

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

  •  基礎(chǔ)網(wǎng)關(guān)能力

網(wǎng)關(guān)的功能不限于轉(zhuǎn)發(fā)流量,更重要的是限流、熔斷等。

APISIX 內(nèi)置了很多插件,提供 APM、日志、熔斷、鑒權(quán)、證書管理、故障注入等功能。同時(shí),也支持拖拽組合新的插件、開發(fā)新插件以滿足業(yè)務(wù)需求。

  •  Serverless

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

利用 Serverless 可以快速對(duì)外提供無(wú)服務(wù)的 API,粘合各種服務(wù),也可以對(duì)外直接提供功能服務(wù)。

  •  灰度發(fā)布

由于對(duì)網(wǎng)關(guān)層進(jìn)行了控制,APISIX 允許用戶通過(guò)配置權(quán)重控制流量的轉(zhuǎn)發(fā)行為,可以用來(lái)做灰度發(fā)布使用。

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 

這里的入口地址是后端服務(wù)的入口地址,如果是生成環(huán)境,應(yīng)該使用 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 

第一個(gè) key 是 admin,第二個(gè) key 是 viewer。這里的 key 可以用來(lái)通過(guò) admin api 來(lái)配置 APISIX,給其他系統(tǒng)集成 APISIX 提供了入口。

(3)安裝 Dashboard

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

默認(rèn)賬戶是:admin 默認(rèn)密碼是:admin

  •  查看 Dashboard 訪問(wèn)入口 
  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 

這里就會(huì)需要設(shè)置上面獲取到的 admin key, 實(shí)際上 ingress-controller 也是通過(guò)調(diào)用 admin api 來(lái)配置路由的。

4、創(chuàng)建服務(wù)測(cè)試

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

  •  創(chuàng)建一個(gè)服務(wù) 
  1. $ kubectl create deployment web --image=gcr.io/google-samples/hello-app:1.0 
  •  暴露服務(wù) 
  1. $ kubectl expose deployment web --type=NodePort --port=8080 
  •  查看服務(wù)

$ 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 配置路由

  •  新建一個(gè)上游服務(wù)

這里需要填入上面創(chuàng)建的集群訪問(wèn)地址:web.default.svc.cluster.local

如何快速的在 Kubernetes 上部署云原生微服務(wù)網(wǎng)關(guān) APISIX

  •  新建一個(gè)路由

如何快速的在 Kubernetes 上部署云原生微服務(wù)網(wǎng)關(guān) APISIX

點(diǎn)擊下一步之后,選擇上面創(chuàng)建的服務(wù) web,相關(guān)的參數(shù)就會(huì)自動(dòng)填充。

如何快速的在 Kubernetes 上部署云原生微服務(wù)網(wǎng)關(guān) APISIX

  •  訪問(wèn)測(cè)試

如何快速的在 Kubernetes 上部署云原生微服務(wù)網(wǎng)關(guān) APISIX

(2)Ingress 配置路由

  •  創(chuàng)建一個(gè) ApisixRoute 路由

雖然這里部署的是 ingress-controller 組件,但是使用時(shí)創(chuàng)建的是 ApisixRoute 對(duì)象。

  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 
  •  訪問(wèn)測(cè)試

如何快速的在 Kubernetes 上部署云原生微服務(wù)網(wǎng)關(guān) APISIX

  •  查看創(chuàng)建的路由    

如何快速的在 Kubernetes 上部署云原生微服務(wù)網(wǎng)關(guān) APISIX

可以發(fā)現(xiàn)路由是被 ingress-controller 接管的,人工不要編輯。

  •  查看服務(wù) 

如何快速的在 Kubernetes 上部署云原生微服務(wù)網(wǎng)關(guān) APISIX

可以看到服務(wù)主要是由四個(gè)后端提供。

  •  查看服務(wù) 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 會(huì)將 Pod 的 IP 地址直接作為流量后端,而不需要經(jīng)過(guò) Service 的轉(zhuǎn)發(fā),這有別于 Kubernetes 的服務(wù)轉(zhuǎn)發(fā)、負(fù)載均衡機(jī)制。

5、總結(jié)

本文主要簡(jiǎn)述了幾種網(wǎng)關(guān)的區(qū)別,思考了 APISIX 主要能幫助我們解決什么問(wèn)題,最后在 Kubernetes 上進(jìn)行了實(shí)踐。內(nèi)容如下:

  •  APISIX 是基于 Nginx 網(wǎng)絡(luò)庫(kù)實(shí)現(xiàn)的 API 網(wǎng)關(guān)應(yīng)用,使用 Etcd 作為存儲(chǔ)后端
  •  APISIX 能作為邊緣路由使用,其動(dòng)態(tài)特性,避免了 Nginx reload 帶來(lái)的抖動(dòng)
  •  APISIX 提供了 admin api 管理路由,有三種方式可以進(jìn)行配置
  •  Kubernetes 下的 APISIX 跳過(guò)了 Kubernetes Service 直接將流量轉(zhuǎn)發(fā)到 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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美日韩激情 | 1级片在线观看 | 中文字幕极速在线观看 | 亚洲第五色综合网 | 好吊色欧美一区二区三区四区 | 国内精品伊人久久 | 91资源在线观看 | 少妇一级淫片免费看 | 免费国产精品视频 | 福利免费在线 | gril hd| 九九热这里只有精品8 | 操操操日日日干干干 | 成人福利在线视频 | 国产一级一区二区 | 国产精品久久久久久模特 | 国产精品手机在线亚洲 | 男女无遮挡羞羞视频 | 国产精品一| 日产精品一区二区三区在线观看 | 欧美人禽| 99国产精品国产免费观看 | 99精品视频网站 | 亚洲午夜天堂吃瓜在线 | 一本在线高清码电影 | 亚洲国产精品一区二区久久 | xnxx 日本19| 国产精品成人久久久久a级 av电影在线免费 | 国产精品一 | 欧美一级特黄aaaaaaa什 | 97超级碰碰人国产在线观看 | 国产一级一级片 | 久久久国产一区二区三区 | 日韩中文字幕一区二区三区 | 免费1级做55爰片l在线观看 | 国产精品高清一区 | 亚洲自拍第一 | 成人一区二区在线观看视频 | 午夜视频你懂的 | 久久久久久久久久久久久久久伊免 | 一色桃子av大全在线播放 |