搭配範例使用 Bridge to Kubernetes
注意
Bridge to Kubernetes 將於 2025 年 4 月 30 日淘汰。 如需淘汰和開放原始碼替代方案的詳細資訊,請參閱 GitHub 問題。
此範例說明如何使用 Bridge to Kubernetes 在任何 Kubernetes 叢集上開發簡單 TODO 應用程式的微服務版本。 此範例使用 Visual Studio Code,已從 TodoMVC所提供的程式代碼進行調整。 在此範例中,我們使用MiniKube來裝載應用程式,但這些步驟應該與任何 Kubernetes 叢集搭配使用。
TODO 應用程式範例是由前端和提供永續性記憶體的後端所組成。 此擴充範例會新增統計數據元件,並將應用程式分成數個微服務,特別是:
- 前端會呼叫 database-api 來保存及更新 TODO 專案;
- 資料庫 API 服務依賴 Mongo 資料庫來保存 TODO 專案;
- 前端會將新增、完成和刪除事件寫入RabbitMQ佇列;
- 統計數據工作者會從 RabbitMQ 佇列接收事件,並更新 Redis 快取;
- 統計數據 API 會將快取的統計數據揭露給前端顯示。
畢竟,這個擴充的 TODO 應用程式是由六個相互關聯的元件所組成。
先決條件
- 任何 Kubernetes 叢集,或使用 Chocolatey 套件管理員來安裝 MiniKube
- 在 Windows 10 上,Hyper-V
- Kubectl 已安裝並且在您選擇的指令行環境的路徑中
- Bridge to Kubernetes Visual Studio Code 擴充功能
安裝 MiniKube
您可以使用任何 Kubernetes 提供者搭配 Bridge to Kubernetes。 在本文中,我們使用 MiniKube。 MiniKube 是輕量型 Kubernetes 提供者,可讓您在本機計算機上裝載 Kubernetes。 請遵循 安裝指示 在 Windows 10、Linux 或 macOS 上安裝 MiniKube。
為了在 Windows 10 上取得最佳結果,您應該使用 Hyper-V VM 管理員,並在 建立虛擬交換器。
安裝之後,啟動 MiniKube、指定使用 Hyper-V,並提供主要虛擬交換器的名稱。 此命令必須從具有系統管理員許可權的命令提示字元執行。
minikube start --vm-driver hyperv --hyperv-virtual-switch "Primary Virtual Switch"
部署應用程式
將 Bridge to Kubernetes 版本庫 的內容複製,並在目前工作資料夾中開啟命令視窗,其工作資料夾設置為 todo-app。
建立範例的命名空間。
kubectl create namespace todo-app
然後,套用部署指令清單:
kubectl apply -n todo-app -f deployment.yaml
這是一個簡單的部署,透過類型為 LoadBalancer
的服務來公開前端。 等候所有 Pod 啟動完成,並讓 frontend
服務的外部 IP 可供使用。
如果您要使用 MiniKube 進行測試,則必須使用 minikube tunnel
來解析外部 IP。
kubectl get services -n todo-app
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
frontend LoadBalancer 10.0.49.177 127.0.0.1 80:30145/TCP 18h
請使用外部IP和本地端口訪問應用程式(PORT(S)資料行中的第一個數位)。
http://{external-ip}:{local-port}
在瀏覽器中測試執行中的應用程式。 當您新增、完成和刪除 todo 項目時,請注意統計頁面會根據預期的計量進行更新。
偵錯 stats-api 服務
您現在可以使用 Bridge to Kubernetes 擴充功能來示範如何將來自 Kubernetes 叢集的流量重新導向至本機執行的 stats-api 版本。
cd stats-api/
在 VS Code 中開啟 stats-api 的原始程式碼。
code .
VS Code 啟動之後,請從 VS Code 的左側提要字段開啟 Kubernetes 窗格,然後選取 MiniKube 叢集中的 todo-app 命名空間。 以滑鼠右鍵按下 todo-app 節點,然後選擇 [使用名稱空間]。
在終端機視窗中執行 npm install
來安裝相依性 (CTRL + ~)。
npm install
接下來,在 server.js
的第 17 行上放置斷點。
開啟命令選擇區 (CTRL+SHIFT+P 或 Cmd+Shift+Mac 上的 P),然後輸入 Bridge to Kubernetes。 選取 [Bridge to Kubernetes:設定] 選項。
系統會提示您設定您想要取代的服務、要從開發電腦轉送的埠,以及要使用的啟動工作。
選擇 stats-api
服務。
的服務
選取服務之後,系統會提示您輸入本機應用程式的 TCP 連接埠。 在此範例中,輸入 3001。
選擇 [執行腳本:開發 作為啟動任務。
您可以選擇執行隔離模式或非隔離模式。 如果您以獨立運行的方式執行,則您的請求會被路由到本機進程;其他開發人員可以使用叢集,而不會受到影響。 如果您沒有獨立運行,所有流量都會重新導向至本機程序。 如需關於此選項的更多資訊,請參閱 使用路由功能進行隔離開發。 在此範例中,讓我們使用非隔離。
注意
VS Code 會提示您允許 EndpointManager 以提高的權限運行並修改 hosts 文件。
已成功設定 Bridge to Kubernetes 偵錯配置檔。
選擇左方的 [除錯] 圖示,然後選取 [執行腳本:使用 Kubernetes 進行開發]。 按下 [執行文稿:使用 Kubernetes 進行開發] 旁的 [開始] 按鈕,。
當 VS Code 狀態列變成橙色且 Kubernetes 擴充功能顯示您已連線時,您的開發電腦就會連線。 一旦開發計算機連線,流量就會開始重新導向至您正在取代之 stats-api 的開發計算機。
導航至待辦事項應用程式的前端入口。 針對 minikube,我們將使用 127.0.0.1
。 若要存取您應用程式的本機端點 URL,請開啟狀態列上的 [Kubernetes] 選單,然後選擇端點專案。
選擇 統計數據 連結,向 stats-api 發送請求。
請注意,最初在叢集中啟動的流量會重新導向至觸發斷點的本機執行版本(在叢集外部)。
按下播放鍵,讓請求無縫地繼續進行。
此範例只是如何在非 AKS 叢集上使用 Bridge to Kubernetes 的其中一個圖例。 接下來,請在您自己的專案上試試看!
清理
若要清除此範例所產生的資產,請執行:
kubectl delete namespace todo-app
後續步驟
您也可以使用 Bridge to Kubernetes 將應用程式部署至 Azure Kubernetes Service (AKS)。 請參閱 使用 Bridge to Kubernetes 搭配 AKS