微服務遠端Debug,Nocalhost + Rainbond微服務開發第二彈
之前的文章中我們介紹瞭如何通過 Nocalhost 快速開發 Rainbond 上的微服務,介紹了基本的開發流程。
本文將續接上文繼續介紹,使用 Nocalhost 開發配置檔案 實現以下內容:
- 一鍵 Run 和 遠端Debug
- 持久化配置
- 開發容器資源限制
- 埠轉發
什麼是開發配置?
開發配置是圍繞 開發模式
來進行的,例如使用什麼映象來進入 開發模式
,是否需要開啟持久化來儲存開發容器的內容,將哪些檔案同步到開發容器中,如何一鍵除錯、一鍵執行容器內的服務等。 配置了正確且合適的開發配置後,可以在使用 Nocalhost 開發模式
時更加得心應手。
部署 Rainbond + SpringCloud
接下來繼續以上文中的 SpringCloud Pig 為例,除錯 Java Maven 服務的 Pig-auth 模組。
專案 Gitee 地址:http://gitee.com/zhangbigqi/pig
部署 Rainbond
這裡就不詳細介紹 Rainbond 的安裝,請參閱 基於Linux安裝Rainbond。
部署 SpringCloud
我們在 Rainbond 內對接了開源應用商店後,在開源應用商店內搜尋 Spring Cloud Pig
安裝 3.5.0
版本。
來自應用商店安裝應用元件的英文名稱是自動生成的字串,需要我們設定一下元件的英文名稱(Deployment Name),通過 Nocalhost 連線到叢集時可以很直觀的分清楚 Deployment 對應的元件。
Nocalhost 對接 Rainbond
-
安裝 Nocalhost JetBrains Plugin 外掛,請參閱文件 安裝Nocalhost JetBrains Plugin 外掛。
-
獲取 K8s Kubeconfig,請參閱文件 獲取 Kubeconfig 檔案。
-
在
pig
名稱空間下,找到工作負載pig-auth
右擊並選擇Dev Config
(開發配置)
- 將以下配置檔案複製到
Dev Config
中。
# Deployment Name
name: pig-auth
serviceType: deployment
containers:
# Deployment 主容器名稱
- name: auth
dev:
# 開發映象,該映象包含了 Java Maven 環境
image: registry.cn-hangzhou.aliyuncs.com/zqqq/maven:3.8.6-openjdk-8
# 預設終端為 bash
shell: bash
# Rainbond 提供的 StorageClass Name
storageClass: rainbondvolumerwx
# 配置開發容器資源
resources:
limits:
memory: 4096Mi
cpu: "2"
requests:
memory: 2048Mi
cpu: "1"
persistentVolumeDirs:
# Maven 依賴包快取路徑,配合 storageClass 一起食用
- path: /root/.m2/repository
capacity: 10Gi
command:
# 一鍵啟動命令,安裝依賴包和啟動 pig-auth 子模組
run:
- mvn
- install
- '&&'
- mvn
- spring-boot:run
- -pl
# 指定子模組啟動
- pig-auth
# 一鍵 Debug 命令,安裝依賴包和 Debug pig-auth 子模組
debug:
- mvn
- install
- '&&'
- mvn
- spring-boot:run
- -pl
# 指定子模組啟動
- pig-auth
# Java Debug 命令
- -Dspring-boot.run.jvmArguments=-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005
debug:
# 遠端埠,對應Debug命令中的 address=5005
remoteDebugPort: 5005
# 選擇 Java 語言
language: java
# 熱載入
hotReload: true
# 檔案同步
sync:
type: send
mode: gitIgnore
deleteProtection: true
# 埠轉發,轉發容器內的3000埠到本地3999
portForward:
- 3999:3000
一鍵 Run
- 右擊工作負載
pig-auth
。 - 選擇 Remote Run。
- Nocalhost 會自動進入 DevMode 並執行 Remote Run。
一鍵 Debug
- 右擊工作負載
pig-auth
。 - 選擇 Remote Debug。
- Nocalhost 會自動進入 DevMode 並執行 Remote Debug。
- 在程式碼中打上斷點,發起請求,進入 IDE Debug 模式。
持久化配置
在開發時,我們希望持久化的檔案大多數都是 依賴包
日誌
,本篇文章中也是快取了 Java 的依賴包。
rainbondvolumerwx
是 Rainbond 預設提供的儲存類,填寫以下配置後會在當前名稱空間下自動建立 PVC,如下:
storageClass: rainbondvolumerwx
persistentVolumeDirs:
- path: /root/.m2/repository
capacity: 10Gi
容器資源限制
限制開發容器的資源,限額能讓伺服器的資源利用最大化,可以通過以下開發配置修改:
resources:
limits:
memory: 4096Mi
cpu: "2"
requests:
memory: 2048Mi
cpu: "1"
埠轉發
轉發容器埠到本地,可以通過以下開發配置修改:
portForward:
- 3999:3000 # 轉發容器 3000 埠到本地 3999 埠
最後
當然 Nocalhost 可以同時除錯多個微服務,同樣的方式只需修改配置檔案中的 Deployment Name 和 Containers Name 以及微服務的子模組。
Nocalhost 還有一些開發配置文中沒講到的,比如:開發環境變數、檔案同步的兩種模式 pattern
gitignore
等等,並且 Nocalhost 支援多種語言,Java 只是其中一種,小夥伴們可以自行探索。
Nocalhost + Rainbond 讓開發、部署更加高效、便捷。
About Rainbond
Rainbond 核心100%開源,使用簡單,不需要懂容器和Kubernetes,支援管理多種Kubernetes叢集,提供企業級應用的全生命週期管理。
🌟 Github:http://github.com/goodrain/rainbond
💻 官網:http://www.rainbond.com
🏠 微信群:關注 Rainbond 公眾號加入技術交流群
🏡 釘釘群:請搜尋釘釘群號 31096419
- 在 Rainbond 上使用 Curve 雲原生儲存
- 雲原生落地實踐:山西數智時代基於 Rainbond 實現智慧景區
- 使用流水線外掛實現持續整合、持續部署
- 如何建設私有云原生 Serverless 平臺
- 基於 Rainbond 的 Pipeline(流水線)外掛
- 10分鐘學會使用 Loki 日誌聚合系統
- 讓遠端成為本地,微服務後端開發的福音
- 讓遠端成為本地,微服務後端開發的福音
- 10分鐘在 Rainbond 上部署 mall 電商專案
- 一站式雲原生體驗|龍蜥雲原生ACNS Rainbond
- 雲原生技術在離線交付場景中的實踐
- 簡單易用的監控告警系統 | HertzBeat 在 Rainbond 上的使用分享
- 微服務開發平臺 Spring Cloud Blade 部署實踐
- 不懂 Kubernetes 實現雲原生是什麼體驗?
- 乾貨分享|使用 Istio 實現灰度釋出
- 乾貨分享|使用 Istio 實現灰度釋出
- 不懂 Kubernetes 實現雲原生是什麼體驗?
- 乾貨分享!JAVA診斷工具Arthas在Rainbond上實踐~
- 如何不編寫 YAML 管理 Kubernetes 應用?
- 實踐分享!GitLab CI/CD 快速入門