使用 Nocalhost 開(kāi)發(fā) Rainbond 上的微服務(wù)應(yīng)用
本文將介紹如何使用 Nocalhost 快速開(kāi)發(fā) Rainbond 上的微服務(wù)應(yīng)用的開(kāi)發(fā)流程以及實(shí)踐操作步驟。
Nocalhost 可以直接在 Kubernetes 中開(kāi)發(fā)應(yīng)用,Rainbond 可以快速部署微服務(wù)項(xiàng)目,無(wú)需編寫Yaml,Nocalhost 結(jié)合 Rainbond 加速我們的微服務(wù)開(kāi)發(fā)效率。
一. 簡(jiǎn)介
Nocalhost[1] 是一款開(kāi)源的基于 IDE 的云原生應(yīng)用開(kāi)發(fā)工具:
直接在 Kubernetes 集群中構(gòu)建、測(cè)試和調(diào)試應(yīng)用程序。
提供易于使用的 IDE 插件(支持 VS Code 和 JetBrains),即使在 Kubernetes 集群中進(jìn)行開(kāi)發(fā)和調(diào)試,Nocalhost 也能保持和本地開(kāi)發(fā)一樣的開(kāi)發(fā)體驗(yàn)。
使用即時(shí)文件同步進(jìn)行開(kāi)發(fā):即時(shí)將您的代碼更改同步到遠(yuǎn)端容器,而無(wú)需重建鏡像或重新啟動(dòng)容器。
Rainbond[2] 是一款云原生應(yīng)用管理平臺(tái):
使用簡(jiǎn)單,不需要懂容器、Kubernetes和底層復(fù)雜技術(shù),支持管理多個(gè)Kubernetes集群,和管理企業(yè)應(yīng)用全生命周期。主要功能包括應(yīng)用開(kāi)發(fā)環(huán)境、應(yīng)用市場(chǎng)、微服務(wù)架構(gòu)、應(yīng)用交付、應(yīng)用運(yùn)維、應(yīng)用級(jí)多云管理等。
二. 本地 + Rainbond 開(kāi)發(fā)微服務(wù)
以前我們?cè)诒镜?+ Rainbond 開(kāi)發(fā)微服務(wù)時(shí),要開(kāi)發(fā)的模塊我們運(yùn)行在本地,其他模塊運(yùn)行在 Rainbond 上,我們通過(guò) Rainbond 的網(wǎng)關(guān)與本地進(jìn)行通信、聯(lián)調(diào)。
這樣會(huì)遇到一些問(wèn)題:
- 多人協(xié)作開(kāi)發(fā)聯(lián)調(diào)困難
- 本地環(huán)境差異化
- 無(wú)法通過(guò)注冊(cè)中心(Nacos)調(diào)用其他微服務(wù)
- 遠(yuǎn)程Debug較難
- 受限于本地資源
三. 使用 Nocalhost + Rainbond 開(kāi)發(fā)微服務(wù)
現(xiàn)在我們通過(guò) Nocalhost + Rainbond 開(kāi)發(fā)微服務(wù)時(shí),所有服務(wù)都運(yùn)行在 Rainbond 上,當(dāng)要開(kāi)發(fā)時(shí)本地 Vscode 直連到 Rainbond 組件中,并與本地代碼實(shí)時(shí)同步到 Rainbond 組件中。多人開(kāi)發(fā)聯(lián)調(diào)時(shí),可通過(guò) Rainbond 內(nèi)置的 Service Mesh 進(jìn)行服務(wù)之間聯(lián)調(diào)。
使用 Nocalhost 開(kāi)發(fā),可以解決本地開(kāi)發(fā)時(shí)遇到的問(wèn)題:
- 多人聯(lián)調(diào)開(kāi)發(fā)更便捷
- 服務(wù)都運(yùn)行在 Rainbond 上,不再受限于本地
- 與生產(chǎn)環(huán)境更接近
- 遠(yuǎn)程Debug
- 通過(guò)注冊(cè)中心(Nacos)調(diào)用其他微服務(wù)組件
四. 實(shí)踐操作步驟
Nocalhost 目前支持兩種開(kāi)發(fā)模式:
- Repliace DevMode
- Duplicate DevMode
本篇將主要介紹 Replace DevMode,當(dāng)進(jìn)入 Replace DevMode 時(shí),Nocalhost 會(huì)對(duì) 組件 執(zhí)行以下操作:
- 將副本數(shù)縮減為 1
- 替換容器的鏡像為開(kāi)發(fā)鏡像
- 增加一個(gè) sidecar 容器。
- 轉(zhuǎn)發(fā)一個(gè)本地端口到文件同步服務(wù)器。
- 啟動(dòng)本地文件同步客戶端。
- 打開(kāi)遠(yuǎn)程終端。
4.1 安裝 Nocalhost 插件
Nocalhost 支持 VScode JetBrains ,這里我們主要介紹 VScode 插件安裝[3]參考官網(wǎng)文檔。
- 打開(kāi) VScode,點(diǎn)擊左側(cè)的 Extension 按鈕
圖標(biāo)
- 在搜索框中輸入 Nocalhost 選擇 Nocalhost 插件,并點(diǎn)擊 Install 按鈕
4.2 安裝 Rainbond
我們選擇 基于主機(jī)安裝 Rainbond[4]。
4.3 Nocalhost 對(duì)接 Rainbond 集群
- 獲取 kubeconfig 文件,進(jìn)入 Rainbond 集群視圖 -> 點(diǎn)擊節(jié)點(diǎn)配置 -> kubeconfig。
- 我們將 kubeconfig 文件復(fù)制到本地并保存為 yaml 文件。
- 打開(kāi) Vscode,點(diǎn)擊按鈕
,打開(kāi) Nocalhost 插件,選擇 Connect to Cluster,選擇我們 kubeconfig 文件的路徑,點(diǎn)擊 Add Cluster,添加集群。
- 添加完成后,如下圖:
4.4 在 Rainbond 上部署 Spring Cloud 微服務(wù)
- 這里選擇從開(kāi)源應(yīng)用商店安裝 Spring Cloud Pig 微服務(wù)組件,在應(yīng)用商店中搜索 Pig 進(jìn)行安裝。
- 部署完成后,效果如下:
4.5 進(jìn)入 Nocalhost 開(kāi)發(fā)模式
上面我們已經(jīng)在本地 Vscode 中對(duì)接好了集群,并且也已經(jīng)在 Rainbond 中安裝了 Spring Cloud Pig 微服務(wù),那么接下來(lái)我們?cè)诒镜?Vscode 中選擇其中一個(gè)組件進(jìn)行開(kāi)發(fā),這里為了效果更明顯,選擇開(kāi)發(fā) pig-ui 組件。
Spring Cloud Pig 后端[5]
Spring Cloud Pig 前端[6]
4.5.1 克隆 Pig-ui 代碼到本地
git clone https://gitee.com/zhangbigqi/pig-ui
4.5.2 啟動(dòng)本地開(kāi)發(fā)
打開(kāi) Vscode,點(diǎn)擊按鈕,找到我們的 Pig-ui 組件,由于該應(yīng)用是從開(kāi)源應(yīng)用商店中安裝,Deployment名稱是自動(dòng)生成的字符串,我們需要在組件中查詢下。
我們點(diǎn)擊旁邊的??進(jìn)入開(kāi)發(fā)模式,
- 提示選擇容器,我們選擇 gred5f1c 這個(gè)容器,剩下那個(gè)容器是 Rainbond 的 Mesh 容器,用于內(nèi)部通信,不可替換。
- 提示指定源代碼目錄,選擇我們剛剛克隆下來(lái)的代碼目錄。
- 等待片刻后,會(huì)默認(rèn)打開(kāi)遠(yuǎn)端容器的終端界面并且容器內(nèi)的文件會(huì)與本地實(shí)時(shí)同步,如下:
4.5.3 啟動(dòng)項(xiàng)目
- 安裝項(xiàng)目依賴,執(zhí)行
npm install
運(yùn)行項(xiàng)目
npm run dev
啟動(dòng)后效果如下,容器內(nèi)端口為 80。
開(kāi)啟端口轉(zhuǎn)發(fā),點(diǎn)擊按鈕,找到我們的 Deployment,右鍵選擇 Port Forward,Add Port Forward,輸入 38000:80 將容器的80端口轉(zhuǎn)發(fā)到本地的38000端口。
- 通過(guò) http://localhost:38000 可以訪問(wèn)到頁(yè)面,并且也可以正常登錄。
4.5.4 修改代碼查看效果
上面已經(jīng)演示了如果通過(guò)本地訪問(wèn)到遠(yuǎn)端容器內(nèi)的服務(wù),接下來(lái)我們修改代碼看下效果。
修改 src/page/wel.vue,新增一段代碼,保存??梢园l(fā)現(xiàn),當(dāng)我們保存的時(shí)候,終端中就自動(dòng)重啟了,與本地開(kāi)發(fā)效果一致。
文件的修改會(huì)實(shí)時(shí)同步到容器中。
刷新頁(yè)面http://localhost:38000,可以看到修改的內(nèi)容已生效。
寫在最后
通過(guò)以上的實(shí)踐步驟,我們已經(jīng)可以通過(guò) Nocalhost 開(kāi)發(fā) Rainbond 上的微服務(wù)應(yīng)用,擺脫本地開(kāi)發(fā),進(jìn)入云原生快速開(kāi)發(fā),提升我們的開(kāi)發(fā)效率。
本文僅介紹了基本的開(kāi)發(fā),還可以為項(xiàng)目配置 Nocalhost開(kāi)發(fā)配置[7] 等等,小伙伴們可以自行探索。
[1]Nocalhost: https://nocalhost.dev
[2]Rainbond: https://www.rainbond.com/docs
[3]VScode 插件安裝: https://nocalhost.dev/docs/installation
[4]基于主機(jī)安裝 Rainbond: https://www.rainbond.com/docs/installation/install-with-ui/host-install-with-ui
[5]Spring Cloud Pig 后端: https://gitee.com/zhangbigqi/pig
[6]Spring Cloud Pig 前端: https://gitee.com/zhangbigqi/pig-ui[7]Nocalhost開(kāi)發(fā)配置: https://nocalhost.dev/docs/config/config-overview-en
本文為作者張齊投稿,作者為云原生愛(ài)好者,歡迎各位投稿。