將 Bridge to Kubernetes 與範例搭配使用
此範例說明如何使用 Bridge to Kubernetes,在任何 Kubernetes 叢集上開發簡單 TODO 應用程式的微服務版本。 此範例使用 Visual Studio Code,已從 TodoMVC 所提供的程式碼進行調整。 在此範例中,我們使用 MiniKube 來裝載應用程式,但這些步驟應該與任何 Kubernetes 叢集搭配使用。
TODO 應用程式範例由提供持續性儲存體的前端和後端組成。 此擴充範例會新增統計資料元件,並將應用程式分成數個微服務,尤其是:
- 前端會呼叫 database-api 來保存及更新 TODO 項目;
- database-api 服務依賴 Mongo 資料庫來保存 TODO 項目;
- 前端會將新增、完成和刪除事件寫入 RabbitMQ 佇列;
- 統計資料背景工作角色會從 RabbitMQ 佇列接收事件,並更新 Redis 快取;
- 統計資料 API 會公開前端要顯示的快取統計資料。
畢竟,此擴充的 TODO 應用程式是由六個相互關聯的元件所組成。
必要條件
- 任何 Kubernetes 叢集,或安裝 MiniKube 的 Chocolatey 套件管理員
- 在 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 資料行中的第一個數字)。
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] 節點,並選擇 [使用命名空間]。
在終端機視窗 (CTRL + ~) 中執行 npm install
來安裝相依性。
npm install
首先,將中斷點放在 server.js
的第 17 行。
開啟命令選擇區 (CTRL+SHIFT+P 或在 Mac 上為 Cmd+Shift+P),然後輸入 Bridge to Kubernetes。 選取 [Bridge to Kubernetes:設定] 選項。
系統會提示您設定想要取代的服務、要從開發電腦轉送的連接埠,以及要使用的啟動工作。
選擇 stats-api
服務。
選取服務之後,系統會提示您輸入本機應用程式的 TCP 通訊埠。 針對此範例,輸入 3001。
選擇 [執行指令碼:開發] 作為啟動工作。
您可以選擇執行隔離或不隔離。 如果您執行隔離,則只會將要求路由傳送至本機處理序;其他開發人員可以使用叢集,而不會受到影響。 如果您沒有執行隔離,所有流量都會重新導向至本機處理序。 如需此選項的詳細資訊,請參閱使用路由功能進行隔離開發。 在此範例中,讓我們使用非隔離。
注意
VS Code 會提示您允許 EndpointManager 執行提升權限並修改主機檔案。
已成功設定 Bridge to Kubernetes 偵錯設定檔。
請選取左側的 [偵錯] 圖示,然後選取 [執行指令碼:使用 Kubernetes 開發]。 按一下 [執行指令碼:使用 Kubernetes 開發] 旁的開始按鈕。
當 VS Code 狀態列變成橙色且 Kubernetes 延伸模組顯示您已連線時,則您的開發電腦即已連線。 一旦開發電腦已連線,流量就會開始重新導向至您正在取代之 stats-api 的開發電腦。
瀏覽至 todo-app 的前端進入點。 對於 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 搭配使用