日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

ABP vNext微服务架构详细教程——项目部署

發(fā)布時(shí)間:2023/12/4 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ABP vNext微服务架构详细教程——项目部署 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1

基礎(chǔ)配置

在之前的文章中,我們已經(jīng)配置了Kubernetes集群并安裝了管理工具Kubesphere,文章地址為:https://mp.weixin.qq.com/s/MgpdMv5A-fYxN7XY8N9Djw

登錄Kubesphere頁(yè)面,打開(kāi)工作臺(tái),在平臺(tái)資源選項(xiàng)卡中點(diǎn)擊“企業(yè)空間”,進(jìn)入企業(yè)空間管理頁(yè)面,點(diǎn)擊“創(chuàng)建”按鈕,創(chuàng)建我們自己的企業(yè)空間。

點(diǎn)擊進(jìn)入剛剛創(chuàng)建的企業(yè)空間,在左側(cè)菜單點(diǎn)擊“項(xiàng)目”,打開(kāi)項(xiàng)目面板,并點(diǎn)擊“創(chuàng)建”按鈕,創(chuàng)建一個(gè)新的項(xiàng)目,這里我們名稱為“demoproject”。

點(diǎn)擊進(jìn)入該項(xiàng)目,在菜單中找到應(yīng)用負(fù)載→應(yīng)用,選擇自制應(yīng)用,點(diǎn)擊創(chuàng)建按鈕,填入應(yīng)用名稱,暫時(shí)忽略其他步驟一直點(diǎn)擊“下一步”到創(chuàng)建完成。

2

服務(wù)部署

在demoproject項(xiàng)目菜單中找到配置→保密字典,點(diǎn)擊“創(chuàng)建”,名稱輸入aliyungit,用于配置阿里云鏡像倉(cāng)庫(kù)用戶名密碼,輸入名稱后點(diǎn)擊下一步,類型選擇“鏡像倉(cāng)庫(kù)信息”。倉(cāng)庫(kù)地址選擇“https://”,后面輸入框中輸入鏡像倉(cāng)庫(kù)公網(wǎng)地址以‘/’分割的第一段文字,例如鏡像公網(wǎng)地址為?registry.cn-beijing.aliyuncs.com/zklight/productmanager?,則我們?cè)谳斎肟蛑休斎?registry.cn-beijing.aliyuncs.com?。后面我們輸入鏡像倉(cāng)庫(kù)的用戶名、密碼,點(diǎn)擊驗(yàn)證通過(guò)后點(diǎn)擊“創(chuàng)建”完成該項(xiàng)配置。

在應(yīng)用負(fù)載→應(yīng)用→自制應(yīng)用中找到第一章節(jié)中我們創(chuàng)建的應(yīng)用并進(jìn)入該應(yīng)用管理頁(yè)面,點(diǎn)擊更多操作→添加服務(wù),選擇無(wú)狀態(tài)服務(wù)。輸入名稱并點(diǎn)擊“下一步”,在容器組設(shè)置中點(diǎn)擊“添加容器”,在鏡像一欄下拉選框選擇剛才創(chuàng)建的阿里云鏡像倉(cāng)庫(kù)地址,輸入框中輸入【鏡像倉(cāng)庫(kù)命名空間】/【鏡像倉(cāng)庫(kù)名稱】,例如?zklight/productmanager?,點(diǎn)擊回車,即可出現(xiàn)我們之前上傳的鏡像,在“端口設(shè)置”選項(xiàng)卡中的名稱、容器端口、服務(wù)端口中分別填入該服務(wù)的端口號(hào),例如產(chǎn)品管理服務(wù)的端口號(hào)為5010,則名稱為“http-5010”,容器端口和服務(wù)端口均為5010。容器其他配置如果需要可依據(jù)實(shí)際情況進(jìn)行配置,點(diǎn)擊“√”并一直點(diǎn)擊“下一步”完成服務(wù)創(chuàng)建。

創(chuàng)建完成后,在項(xiàng)目面板,應(yīng)用負(fù)載→工作負(fù)載中可找到工作負(fù)載“productmanager-v1”,在應(yīng)用負(fù)載→服務(wù)中可找到服務(wù)“productmanager”。由于生產(chǎn)環(huán)境和開(kāi)發(fā)環(huán)境配置文件內(nèi)容應(yīng)該不同,所以工作負(fù)載暫時(shí)無(wú)法運(yùn)行。

在項(xiàng)目面板左側(cè)菜單中找到配置→配置字典,點(diǎn)擊“創(chuàng)建”,輸入名稱“productmanagerconfig”,并點(diǎn)擊下一步。在數(shù)據(jù)設(shè)置中點(diǎn)擊添加數(shù)據(jù),鍵我們輸入?appsettings?,值我們將產(chǎn)品管理服務(wù)的配置文件appsettings.json的所有內(nèi)容復(fù)制過(guò)來(lái),并依據(jù)我們實(shí)際生產(chǎn)環(huán)境的配置修改各配置項(xiàng),修改完成后點(diǎn)擊“創(chuàng)建”完成配置項(xiàng)創(chuàng)建。

這里,如果我們出現(xiàn)服務(wù)間相互調(diào)用,則使用前面自制應(yīng)用中添加服務(wù)后產(chǎn)生的服務(wù)名稱,即應(yīng)用負(fù)載→服務(wù)中的服務(wù)名稱代替原IP地址或localhost,其他內(nèi)容不變,Kubernetes會(huì)自動(dòng)完成被調(diào)用服務(wù)的反向代理。

例如身份管理服務(wù)、訂單服務(wù)、產(chǎn)品服務(wù)名稱分別為identitymanager、ordermanager、productmanager,則在商城服務(wù)中RemoteServices配置如下:

"RemoteServices": {"Default": {"BaseUrl": "http://identitymanager:5000/"},"ProductManager": {"BaseUrl": "http://productmanager:5010/"},"OrderManager": {"BaseUrl": "http://ordermanager:5011/"} }

?在項(xiàng)目面板應(yīng)用負(fù)載→工作負(fù)載中找到之前創(chuàng)建的工作負(fù)載productmanager-v1并點(diǎn)擊進(jìn)入,點(diǎn)擊更多操作→編輯配置。找到存儲(chǔ)卷選項(xiàng)卡,點(diǎn)擊“掛載配置字典或密保字典”,在配置字典選項(xiàng)卡點(diǎn)擊“選擇配置字典”,選擇剛才創(chuàng)建的productmanagerconfig。選擇“只讀”,并輸入?/app/appsettings.json?。勾選“選擇特定鍵值”,鍵選擇appsettings(如果一個(gè)配置項(xiàng)設(shè)置多個(gè)Key/Value也是再次區(qū)分,建議每個(gè)項(xiàng)目一個(gè)配置項(xiàng),每個(gè)配置文件一個(gè)Key/Value),值輸入?appsettings.json?,如下圖:

點(diǎn)擊“√”并點(diǎn)擊“確認(rèn)”。

點(diǎn)擊更多操作→編輯YAML,編輯工作負(fù)載配置文件如下:

1. 在containers選項(xiàng)中找到imagePullPolicy,值設(shè)置為Always,標(biāo)識(shí)每次構(gòu)建重新拉去鏡像。

2.在containers選項(xiàng)中找到volumeMounts,在其中?mountPath: /app/appsettings.json?這一行下面添加同級(jí)內(nèi)容?subPath: appsettings.json?。

3.點(diǎn)擊“確定”,工作負(fù)載可運(yùn)行成功則表示配置無(wú)誤。

之后,我們按照相同方式依次對(duì)各服務(wù)進(jìn)行部署配置。注意API網(wǎng)關(guān)中只配置聚合服務(wù)層和身份認(rèn)證服務(wù)登錄、刷新Token接口的映射。其將Routes中DownstreamHostAndPorts的Host改為對(duì)應(yīng)服務(wù)在Kubernetes的service名稱。具體如下:

{"Routes": [{"DownstreamPathTemplate": "/api/{url}","DownstreamScheme": "http","DownstreamHostAndPorts": [{"Host": "identityserver","Port": 4100}],"UpstreamPathTemplate": "/ids/{url}","UpstreamHttpMethod": [ "Get","Post","Put","Delete" ]},{"DownstreamPathTemplate": "/api/{url}","DownstreamScheme": "http","DownstreamHostAndPorts": [{"Host": "admin","Port": 6001}],"UpstreamPathTemplate": "/admin/{url}","UpstreamHttpMethod": [ "Get","Post","Put","Delete" ],"AuthenticationOptions": {"AuthenticationProviderKey": "DemoAuth","AllowedScopes": []}},{"DownstreamPathTemplate": "/api/{url}","DownstreamScheme": "http","DownstreamHostAndPorts": [{"Host": "store","Port": 6002}],"UpstreamPathTemplate": "/store/{url}","UpstreamHttpMethod": [ "Get","Post","Put","Delete" ],"AuthenticationOptions": {"AuthenticationProviderKey": "DemoAuth","AllowedScopes": []}}],"GlobalConfiguration": {"BaseUrl": "https://localhost:4000"} }

3

外部訪問(wèn)

Kubesphere提供了兩種Kubernetes集群對(duì)外提供服務(wù)的方式,分別是NodePort和LoadBalancer,詳細(xì)介紹請(qǐng)參照官方文檔:https://kubesphere.com.cn/docs/project-administration/project-gateway/

LoadBalancer方式需要配置負(fù)載均衡器,通常使用云服務(wù)商提供的負(fù)載均衡器實(shí)現(xiàn)。所以我這里只簡(jiǎn)單介紹NodePort方式,如果需要使用LoadBalancer方式可按文檔自行配置。

這里我們只需要為API網(wǎng)關(guān)項(xiàng)目配置外部訪問(wèn),集群外部所有訪問(wèn)必須通過(guò)API網(wǎng)關(guān),不能直接訪問(wèn)其他服務(wù)。

在之前配置的demo項(xiàng)目中,找到應(yīng)用負(fù)載→服務(wù),在列表中找到API網(wǎng)關(guān)對(duì)應(yīng)的服務(wù),點(diǎn)擊右側(cè)?按鈕,選擇“編輯外網(wǎng)訪問(wèn)”,在訪問(wèn)方式中選擇NodePort并點(diǎn)擊“確定”。Kubesphere會(huì)隨機(jī)分配一個(gè)端口號(hào),我們也可以在服務(wù)列表中點(diǎn)擊“編輯配置文件”來(lái)指定端口號(hào),端口號(hào)的范圍必須在30000-32767之間。

之后,我們可以通過(guò)IP地址端口號(hào)來(lái)訪問(wèn)我們的服務(wù)集群,IP地址可以為集群中任意一臺(tái)服務(wù)器的IP地址,或者我們配置的彈性EIP的地址,端口號(hào)即為上一步分配的端口號(hào)。

4

補(bǔ)充說(shuō)明

作為微服務(wù)架構(gòu)系統(tǒng),我們通常希望每一個(gè)服務(wù)都可以部署多個(gè)節(jié)點(diǎn),并實(shí)現(xiàn)彈性伸縮。Kubesphere為我們提供了非常簡(jiǎn)單方便的配置方式,只需要在應(yīng)用負(fù)載→工作負(fù)載,點(diǎn)擊進(jìn)入對(duì)應(yīng)的工作負(fù)載,并點(diǎn)擊更多操作→彈性伸縮,并按需求配置我們的副本數(shù)和伸縮規(guī)則即可。

身份認(rèn)證服務(wù)如果想實(shí)現(xiàn)多個(gè)服務(wù)之間Token互認(rèn),也就是說(shuō)A服務(wù)簽發(fā)的Token在B服務(wù)也可以認(rèn)證通過(guò),一方面需要所有服務(wù)具有統(tǒng)一的接入地址,另一方面需要私鑰文件一致。這里我們使用Kubernetes的Service作為反向代理,保證了入口統(tǒng)一。而ABP vNext框架生成的身份認(rèn)證服務(wù)已經(jīng)將私鑰文件單獨(dú)存放出來(lái)(tempkey.rsa),默認(rèn)情況下部署時(shí)不需要做任何額外處理。

這里我們只使用了Kubernetes很少的一部分功能,無(wú)論是Kubernetes或是Kubesphere,都為我們提供了非常豐富的功能和擴(kuò)展空間,可依據(jù)自己的項(xiàng)目需求進(jìn)行選擇。具體請(qǐng)參考它們各自官方文檔。

end

更多精彩

關(guān)注我獲得

總結(jié)

以上是生活随笔為你收集整理的ABP vNext微服务架构详细教程——项目部署的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。