Dapr學習(4)之eShopOnDapr部署(Rancher2.63&k3s)
本篇主要講述一下github上基於Dapr實現的商城demo在(K8s or K3s)環境中的部署實踐,本文環境基於k3s&rancher2.6.3
1、eShopOnDapr源程式碼及概述
-
源程式碼地址:
-
方案體系結構如下圖:
說明:
1. 前後端分離項目,前端Blazor項目,系統入口,發送api請求到apigateway 2. API 網關從前端客戶端抽象出後端核心微服務,為後端調用總入口。 它是使用 Envoy(一個高性能的開放源程式碼服務代理)實現的。 Envoy 將傳入請求路由到後端微服務。 大多數請求都是簡單的 CRUD 操作(例如,從目錄中獲取品牌列表),通過直接調用後端微服務進行處理。通過轉換uri請求地址,通過Dapr的邊車就行通訊 3. 核心後端微服務:購物車,商品管理,訂單管理,支付管理 4. 事件匯流排包裝 Dapr 發布/訂閱組件。 它實現了跨微服務非同步發布/訂閱消息傳送。
-
ApiGateway Envoy重寫uri截圖如下:
2、環境準備(k3s&rancher2.6.3)
關於Dapr安裝見前面文章://www.cnblogs.com/kunwn/p/16271944.html
3、eShopOnDapr部署
-
下載eShopOnDapr源程式碼,目錄中有deploy文件夾,參考k8s部署模板文件
-
拷貝文件夾到k3s任意節點上(安裝有helm)
-
方法1:命令行,進入到eShopOnDapr文件夾里,執行命令部署:
部署:sudo helm install --set hostName=eshop.local.com myeshop . 卸載:sudo helm uninstall myeshop 指定路徑卸載:sudo helm uninstall myeshop /eShopOnDapr
-
方法2:命令行,本地chart壓縮包,執行命令部署:
壓縮包:sudo helm package eShopOnDapr 部署:sudo helm install eshop eshopondapr-1.0.0.tgz #注意:壓縮包名稱改為小寫,否則會報錯 卸載:sudo helm uninstall eshop eshopondapr-1.0.0.tgz
-
部署成功如下圖:
-
通過rancher介面查看部署狀態,等待一段時間,看所有的pod都已創建完畢
-
我們部署的域名為:eshop.local.com myeshop,我們通過修改hosts文件,指定地址;指定地址:192.168.231.133 eshop.local.com myeshop
sudo kubectl get ingress -n eshopondapr
-
因為k3s默認的ingress controller使用的traefik,所以我們需要變動template模板文件都設置為traefik;我本地部署集群不能安裝nginx ingress controller,不知何故,應該是有衝突的;我想如果是k3s管理的k8s集群,安裝nginx ingress controller應該是沒問題的;資源有限,只能traefik了,況且如果卸載了traefik,就會導致rancher ui不能使用,慎卸
-
通過地址訪問eshop://eshop.local.com/ ,發現報錯
-
點擊LOGIN,可以跳到登錄介面,且可以登錄;證明identity服務是可以訪問的
-
只有通過apigateway調用後端各個微服務的api是報錯的,一直沒有解決,有traefik配置經驗的大佬可以給與指點;如果通過nodeport暴露catalog api服務,是可以調通的,應該是還gateway的配置上出了問題
-
部署文件模板已上傳到地址://gitee.com/xujk-27400861/eshopondapr-k3s-template
4、traefik dashboard配置
-
port-forward 直接埠映射到本地訪問,生產環境推薦
sudo kubectl port-forward $(sudo kubectl get pods --selector "app.kubernetes.io/name=traefik" --output=name -n kube-system) 9000:9000 -n kube-system
備註:訪問本地的 localhost:9000/dashboard/ 即可,dashboard 後邊的 /一定要有,否則會報 404;且只能虛擬機內部(k3s節點)查看,不能使用IP地址訪問
5、K8s刪除無用鏡像
sudo crictl images | awk '{print $3}' | xargs crictl rmi #參考命令
sudo crictl images | grep 'eshopdapr' | awk '{print $3}' | xargs sudo crictl rmi # 刪除eshopdapr相關的鏡像