GSP699

總覽
為何要從單體式應用程式遷移至微服務架構?將應用程式拆解成微服務具有下列優點,其中大多數的優點都是因為微服務採取鬆耦合:
- 微服務可以單獨測試及部署。部署單元越小,部署起來越容易。
- 微服務可以用不同的語言及架構實作。每個微服務可以分別採用最適合其特定用途的技術。
- 微服務可以由不同的團隊管理。微服務之間的界限分明,因此較容易由專責團隊分別管理。
- 遷移到微服務後,即可降低各團隊之間的相依性。微服務的 API 專責團隊只需負責管理,無須考慮微服務如何實作及發布週期等問題。
- 設計容錯機制更容易。由於服務之間的界限分明,所以當服務中斷時,決定該怎麼處理會比較容易。
與單體架構相比,微服務的缺點包括:
- 由於以微服務為基礎的應用程式是由不同服務組成的網路,而這些服務之間的互動通常不怎麼明顯,因此可能會增加系統的整體複雜性。
- 與單體的內部架構不同,微服務需透過網路進行通訊。在某些情況下,這可能會存在安全顧慮。Istio 透過自動加密微服務之間的流量來解決這個問題。
- 由於服務之間的延遲問題,微服務的效能很難達到單體式應用程式的水準。
- 系統行為不是單一服務造成的,而是由許多服務和它們之間的互動所造成。因此,要瞭解系統在實際工作環境中的表現 (即系統的「可觀察性」) 會比較困難。Istio 也能解決此問題。
在本實驗室中,您會將現有的單體式應用程式部署至 Google Kubernetes Engine 叢集,然後將其拆解為微服務。Kubernetes 是一個代管、託管、調度及部署容器的平台。容器是一種打包和執行程式碼的可攜性技術,為微服務提供了理想的條件,使每個微服務都可以執行自己的容器。
微服務架構圖
首先,將單體式應用程式拆分為三項微服務,一次拆分一項。微服務包括訂單、產品和前端。使用 Cloud Build 為每個微服務建立 Docker 映像檔,然後透過 Kubernetes 服務類型 LoadBalancer,在 Google Kubernetes Engine (GKE) 上部署及公開微服務。您將為每項服務執行這項操作,同時將這些服務從單體架構中重構出來。在整個過程中,單體和微服務都會持續運作,直到最後您才能刪除單體。
課程內容
- 如何將單體式應用程式拆解為微服務
- 如何建立 Google Kubernetes Engine 叢集
- 如何建立 Docker 映像檔
- 如何將 Docker 映像檔部署至 Kubernetes
設定和需求
瞭解以下事項後,再點選「Start Lab」按鈕
請詳閱以下操作說明。實驗室活動會計時,且中途無法暫停。點選「Start Lab」後就會開始計時,顯示可使用 Google Cloud 資源的時間。
您將在真正的雲端環境完成實作實驗室活動,而不是模擬或示範環境。為此,我們會提供新的暫時憑證,供您在實驗室活動期間登入及存取 Google Cloud。
為了順利完成這個實驗室,請先確認:
- 可以使用標準的網際網路瀏覽器 (Chrome 瀏覽器為佳)。
注意事項:請使用無痕模式 (建議選項) 或私密瀏覽視窗執行此實驗室,這可以防止個人帳戶和學員帳戶之間的衝突,避免個人帳戶產生額外費用。
- 是時候完成實驗室活動了!別忘了,活動一旦開始將無法暫停。
注意事項:務必使用實驗室專用的學員帳戶。如果使用其他 Google Cloud 帳戶,可能會產生額外費用。
如何開始研究室及登入 Google Cloud 控制台
-
點選「Start Lab」按鈕。如果實驗室會產生費用,畫面上會出現選擇付款方式的對話方塊。左側的「Lab Details」窗格會顯示下列項目:
- 「Open Google Cloud console」按鈕
- 剩餘時間
- 必須在這個研究室中使用的臨時憑證
- 完成這個實驗室所需的其他資訊 (如有)
-
點選「Open Google Cloud console」;如果使用 Chrome 瀏覽器,也能按一下滑鼠右鍵,選取「在無痕視窗中開啟連結」。
接著,實驗室會啟動相關資源,並開啟另一個分頁,顯示「登入」頁面。
提示:您可以在不同的視窗中並排開啟分頁。
注意:如果頁面中顯示「選擇帳戶」對話方塊,請點選「使用其他帳戶」。
-
如有必要,請將下方的 Username 貼到「登入」對話方塊。
{{{user_0.username | "Username"}}}
您也可以在「Lab Details」窗格找到 Username。
-
點選「下一步」。
-
複製下方的 Password,並貼到「歡迎使用」對話方塊。
{{{user_0.password | "Password"}}}
您也可以在「Lab Details」窗格找到 Password。
-
點選「下一步」。
重要事項:請務必使用實驗室提供的憑證,而非自己的 Google Cloud 帳戶憑證。
注意:如果使用自己的 Google Cloud 帳戶來進行這個實驗室,可能會產生額外費用。
-
按過後續的所有頁面:
- 接受條款及細則。
- 由於這是臨時帳戶,請勿新增救援選項或雙重驗證機制。
- 請勿申請免費試用。
Google Cloud 控制台稍後會在這個分頁開啟。
注意:如要使用 Google Cloud 產品和服務,請點選「導覽選單」,或在「搜尋」欄位輸入服務或產品名稱。
啟動 Cloud Shell
Cloud Shell 是搭載多項開發工具的虛擬機器,提供永久的 5 GB 主目錄,而且在 Google Cloud 中運作。Cloud Shell 提供指令列存取權,方便您使用 Google Cloud 資源。
-
點按 Google Cloud 控制台頂端的「啟用 Cloud Shell」圖示
。
-
系統顯示視窗時,請按照下列步驟操作:
- 繼續操作 Cloud Shell 視窗。
- 授權 Cloud Shell 使用您的憑證發出 Google Cloud API 呼叫。
連線建立完成即代表已通過驗證,而且專案已設為您的 Project_ID:。輸出內容中有一行文字,宣告本工作階段的 Project_ID:
Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}
gcloud 是 Google Cloud 的指令列工具,已預先安裝於 Cloud Shell,並支援 Tab 鍵自動完成功能。
- (選用) 您可以執行下列指令來列出使用中的帳戶:
gcloud auth list
- 點按「授權」。
輸出內容:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- (選用) 您可以使用下列指令來列出專案 ID:
gcloud config list project
輸出內容:
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
注意:如需 gcloud 的完整說明,請前往 Google Cloud 參閱 gcloud CLI 總覽指南。
設定預設可用區和專案:
gcloud config set compute/zone {{{project_0.default_zone | (zone)}}}
工作 1:複製來源存放區
您將使用現有的單體式應用程式,也就是虛構的電子商務網站,其中包含簡單的歡迎頁面、產品頁面和訂單記錄頁面。我們只需要從 Git 存放區複製來源,就能專心將其拆解為微服務,並部署至 Google Kubernetes Engine (GKE)。
- 執行下列指令,將 git 存放區複製到 Cloud Shell 執行個體,並切換至適當的目錄。您也需安裝 NodeJS 依附元件,以便在部署前測試單體應用程式:
cd ~
git clone https://github.com/googlecodelabs/monolith-to-microservices.git
cd ~/monolith-to-microservices
./setup.sh
這項指令碼可能需要幾分鐘才能執行完畢。
工作 2:建立 GKE 叢集
現在您已建立可運作的開發環境,接下來需要 Kubernetes 叢集,才能部署單體應用程式和微服務。建立叢集前,請確認已啟用適當的 API。
- 執行下列指令,啟用 Containers API 以使用 Google Kubernetes Engine:
gcloud services enable container.googleapis.com
- 執行下列指令,建立名為 fancy-cluster 的 GKE 叢集,其中包含 3 個節點:
gcloud container clusters create fancy-cluster --num-nodes 3 --machine-type=e2-standard-4
警告:如果收到未指定區域/可用區的錯誤訊息,請參閱環境設定一節,確保您已設定預設的運算可用區。
可能需要幾分鐘時間才能建立叢集。
- 指令執行完畢後,請執行下列指令,查看叢集的三個 worker VM 執行個體:
gcloud compute instances list
輸出:
NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS
gke-fancy-cluster-default-pool-ad92506d-1ng3 {{{project_0.default_zone | (zone)}}} e2-standard-4 10.150.0.7 XX.XX.XX.XX RUNNING
gke-fancy-cluster-default-pool-ad92506d-4fvq {{{project_0.default_zone | (zone)}}} e2-standard-4 10.150.0.5 XX.XX.XX.XX RUNNING
gke-fancy-cluster-default-pool-ad92506d-4zs3 {{{project_0.default_zone | (zone)}}} e2-standard-4 10.150.0.6 XX.XX.XX.XX RUNNING
您也可以在 Cloud 控制台中查看 Kubernetes 叢集和相關資訊。在「導覽選單」中,向下捲動至「Kubernetes Engine」,然後點選「叢集」。
您應該會看到名為 fancy-cluster 的叢集。
恭喜!您已建立第一個 Kubernetes 叢集!
點選「Check my progress」,確認目標已達成。
建立 GKE 叢集
工作 3:部署現有的單體應用程式
本實驗室的重點是將單體式應用程式拆解為微服務,因此單體式應用程式需要先正常運作。
- 執行下列指令碼,將單體應用程式部署至 GKE 叢集:
cd ~/monolith-to-microservices
./deploy-monolith.sh
存取單體式應用程式
- 執行下列指令,找出單體應用程式的外部 IP 位址:
kubectl get service monolith
畫面會顯示類似以下的輸出:
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
monolith 10.3.251.122 203.0.113.0 80:30877/TCP 3d
-
如果輸出內容將外部 IP 列為 <pending>,請稍候片刻再重新執行指令。
-
確認單體的外部 IP 位址後,請複製這個 IP 位址。將瀏覽器指向這個網址 (如 http://203.0.113.0),以檢查您的單體是否能存取。
注意:請記住這個 IP 位址,後續步驟會繼續使用。您隨時都能透過相同指令再次找到這個檔案。
您應該會看到單體式網站的歡迎頁面。歡迎頁面是靜態頁面,稍後會由前端微服務提供。現在,您的單體應用程式已在 Kubernetes 上完整運作!
點選「Check my progress」,確認目標已達成。
Deploy Existing Monolith
工作 4:將訂單遷移至微服務
現在您已在 GKE 上執行單體式網站,請開始將各項服務拆分為微服務。規劃時一般會著重於要將哪些服務拆分成較小的部分,通常是根據應用程式的特定部分 (例如業務領域) 來決定。
在本實驗室中,您將建立範例,並根據業務領域將每個服務分開:訂單、產品和前端。程式碼已遷移完畢,因此您可以專心在 Google Kubernetes Engine (GKE) 上建構及部署服務。
建立訂單微服務
首先要分出的服務是訂單服務。請使用提供的獨立程式碼集,為這項服務建立獨立的 Docker 容器。
使用 Cloud Build 建立 Docker 容器
由於程式碼集已備妥,您的第一步是使用 Cloud Build 建立訂單服務的 Docker 容器。
一般來說,這項作業需要兩個步驟:建構 Docker 容器,然後將容器推送至存放區,讓 GKE 從中提取映像檔。只要一個指令,Cloud Build 就能建構 Docker 容器並將映像檔放入 Artifact Registry!
Google Cloud Build 會壓縮目錄中的檔案,並將其移至 Cloud Storage bucket。建構程序會從 bucket 擷取所有檔案,並使用 Dockerfile 執行 Docker 建構程序。--tag 旗標會將主機指定為 Docker 映像檔的 gcr.io,因此產生的 Docker 映像檔會推送至 Artifact Registry。
- 執行下列指令,建構 Docker 容器並推送至 Artifact Registry:
cd ~/monolith-to-microservices/microservices/src/orders
gcloud builds submit --tag gcr.io/${GOOGLE_CLOUD_PROJECT}/orders:1.0.0 .
這個程序需要一分鐘,完成後終端機中會顯示類似以下的輸出內容:
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ID CREATE_TIME DURATION SOURCE IMAGES STATUS
1ae295d9-63cb-482c-959b-bc52e9644d53 2019-08-29T01:56:35+00:00 33S gs://_cloudbuild/source/1567043793.94-abfd382011724422bf49af1558b894aa.tgz gcr.io//orders:1.0.0 SUCCESS
-
如要查看建構歷程記錄或即時監看程序,請在控制台中搜尋 Cloud Build,然後點選 Cloud Build 結果。
-
在「歷史記錄」頁面中,您會看到所有建構作業的清單,其中應該只有您剛建立的建構作業。點選建構 ID,即可查看該建構作業的所有詳細資料,包括記錄輸出內容。
-
在建構作業詳細資料頁面,如要查看建立的容器映像檔,請在右側點選「執行詳細資料」分頁標籤,然後查看「映像檔」。
將容器部署至 GKE
您已將網站容器化,並將容器推送至 Artifact Registry,現在該部署至 Kubernetes 了!
Kubernetes 會以 Pod 的形式呈現應用程式;Pod 是容器/緊耦合容器群組的單位,也是 Kubernetes 中最小的可部署單位。在本教學課程中,每個 Pod 只包含微服務容器。
如要在 GKE 叢集上部署和管理應用程式,您必須與 Kubernetes 叢集管理系統進行通訊。一般來說,此操作會透過 Cloud Shell 內的 kubectl 指令列工具進行。
首先,建立 Deployment 資源。Deployment 會管理應用程式的多個副本,並將這些副本安排在叢集的各個節點上執行。就這個範例而言,部署作業只會執行應用程式的一個 Pod。Deployment 會建立 ReplicaSet,確保 Pod 數量符合預期。ReplicaSet 負責確保指定數量的副本隨時都在執行。
下方的 kubectl create deployment 指令會讓 Kubernetes 在叢集上建立名為訂單的 Deployment,並使用 1 個副本。
kubectl create deployment orders --image=gcr.io/${GOOGLE_CLOUD_PROJECT}/orders:1.0.0
注意:最佳做法是使用 YAML 檔案,向 Kubernetes 集群宣告變更 (例如建立或修改 Deployment 或 Service),並使用 GitHub 等原始碼控管系統儲存這些變更。詳情請參閱 Kubernetes Deployments 說明文件。
驗證 Deployment
- 執行下列指令,確認 Deployment 已順利建立:
kubectl get all
Pod 狀態可能需要幾分鐘才會變成「Running」。
輸出:
NAME READY STATUS RESTARTS AGE
pod/monolith-779c8d95f5-dxnzl 1/1 Running 0 15h
pod/orders-5bc6969d76-kdxkk 1/1 Running 0 21s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.39.240.1 443/TCP 19d
service/monolith LoadBalancer 10.39.241.130 34.74.209.57 80:30412/TCP 15h
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/monolith 1/1 1 1 15h
deployment.apps/orders 1/1 1 1 21s
NAME DESIRED CURRENT READY AGE
replicaset.apps/monolith-779c8d95f5 1 1 1 15h
replicaset.apps/orders-5bc6969d76 1 1 1 21s
您會看到目前的 Deployment、replicaset (所需 Pod 數量為 1) 和正在執行的 Pod。看來一切都順利建立完成!
您也可以在 Cloud 控制台查看 Kubernetes 部署作業,依序前往「導覽選單」>「Kubernetes Engine」>「工作負載」。
公開 GKE 容器
您已在 GKE 上部署應用程式,但無法從叢集外部存取。根據預設,您在 GKE 上執行的容器無法從網際網路存取,因為這些容器沒有外部 IP 位址。您必須透過 Service 資源,明確將應用程式公開至網際網路傳出的流量。Service 可為應用程式的 Pod 提供網路和 IP 支援。GKE 會建立外部 IP 和負載平衡器。
為配合本實驗室的學習目標,我們簡化了服務公開作業。平常您應該是使用 API 閘道來保護公開端點。
部署訂單服務時,您透過 Kubernetes Deployment 在內部公開了通訊埠 8081。如要對外公開這項服務,您需要建立 LoadBalancer 類型的 Kubernetes 服務,將外部通訊埠 80 的流量轉送至內部通訊埠 8081。
kubectl expose deployment orders --type=LoadBalancer --port 80 --target-port 8081
存取服務
GKE 會將外部 IP 位址指派給 Service 資源,而非 Deployment。
- 如要找出 GKE 為應用程式佈建的外部 IP,請透過
kubectl get service 指令檢查該 Service:
kubectl get service orders
輸出:
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
orders 10.3.251.122 203.0.113.0 80:30877/TCP 3s
確認應用程式的外部 IP 位址後,請複製這個 IP 位址。請儲存這個網址,在後續步驟中,將單體應用程式指向新的訂單服務!
重新設定單體應用程式
由於您已從單體應用程式中移除訂單服務,因此必須修改單體應用程式,以指向新的外部訂單微服務。
分解單體式應用程式時,您要將單一程式碼集中的程式碼片段移至多個微服務,並分別部署。由於微服務在不同的伺服器上執行,您無法再將服務網址當做絕對路徑參照,必須改為將流量導向訂單微服務伺服器位址。這會導致單體服務停機,以更新每個已拆分服務的網址。在微服務遷移過程中,規劃將微服務和單體應用程式移至正式環境時,應將這點納入考量。
您需要更新單體應用程式中的設定檔,以指向新的訂單微服務 IP 位址。
- 使用
nano 編輯器,將本機網址換成訂單微服務的 IP 位址:
cd ~/monolith-to-microservices/react-app
nano .env.monolith
開啟編輯器後,檔案應如下所示:
REACT_APP_ORDERS_URL=/service/orders
REACT_APP_PRODUCTS_URL=/service/products
- 將
REACT_APP_ORDERS_URL 替換為新格式,並將訂單微服務 IP 位址替換為以下內容:
REACT_APP_ORDERS_URL=http://<ORDERS_IP_ADDRESS>/api/orders
REACT_APP_PRODUCTS_URL=/service/products
-
依序按下 CTRL+O 鍵、ENTER 鍵和 CTRL+X 鍵,在 nano 編輯器中儲存檔案。
-
前往您剛在檔案中設定的網址,測試新的微服務。網頁應傳回訂單微服務的 JSON 回應。
-
接著重建單體式前端,並重複建構程序,為單體式應用程式建構容器,然後重新部署至 GKE 叢集:
npm run build:monolith
- 使用 Cloud Build 建立 Docker 容器:
cd ~/monolith-to-microservices/monolith
gcloud builds submit --tag gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:2.0.0 .
- 將容器部署至 GKE:
kubectl set image deployment/monolith monolith=gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:2.0.0
- 前往瀏覽器中的單體應用程式,然後前往「訂單」頁面,確認應用程式現在正在存取訂單微服務。所有訂單 ID 都應以 -MICROSERVICE 為後綴,如下所示:

- 點選「Check my progress」,確認目標已達成。
將訂單遷移至微服務
工作 5:將產品遷移至微服務
建立新的產品微服務
接著遷移產品服務,繼續將服務拆分成多個部分。按照先前的步驟操作。執行下列指令,建構 Docker 容器、部署容器,並透過 Kubernetes 服務公開容器。
- 使用 Cloud Build 建立 Docker 容器:
cd ~/monolith-to-microservices/microservices/src/products
gcloud builds submit --tag gcr.io/${GOOGLE_CLOUD_PROJECT}/products:1.0.0 .
- 將容器部署至 GKE:
kubectl create deployment products --image=gcr.io/${GOOGLE_CLOUD_PROJECT}/products:1.0.0
- 公開 GKE 容器:
kubectl expose deployment products --type=LoadBalancer --port 80 --target-port 8082
- 按照與訂單服務相同的方式,找出產品服務的公開 IP:
kubectl get service products
輸出:
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
products 10.3.251.122 203.0.113.0 80:30877/TCP 3d
在下一個步驟中,您將使用這個 IP 位址重新設定單體應用程式,以指向新的 Products 微服務。
重新設定單體應用程式
- 使用
nano 編輯器,將本機網址換成新 Products 微服務的 IP 位址:
cd ~/monolith-to-microservices/react-app
nano .env.monolith
開啟編輯器後,檔案應如下所示:
REACT_APP_ORDERS_URL=http://<ORDERS_IP_ADDRESS>/api/orders
REACT_APP_PRODUCTS_URL=/service/products
- 將
REACT_APP_PRODUCTS_URL 替換為新格式,並將 產品微服務的 IP 位址替換為以下內容:
REACT_APP_ORDERS_URL=http://<ORDERS_IP_ADDRESS>/api/orders
REACT_APP_PRODUCTS_URL=http://<PRODUCTS_IP_ADDRESS>/api/products
-
依序按下 Ctrl+O 鍵、Enter 鍵和 Ctrl+X 鍵,儲存檔案。
-
前往您剛在檔案中設定的網址,測試新的微服務。網頁應傳回產品微服務的 JSON 回應。
-
接著重建單體式前端,並重複建構程序,為單體式應用程式建構容器,然後重新部署至 GKE 叢集。執行下列指令來完成這些步驟:
-
重建單體設定檔:
npm run build:monolith
- 使用 Cloud Build 建立 Docker 容器:
cd ~/monolith-to-microservices/monolith
gcloud builds submit --tag gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:3.0.0 .
- 將容器部署至 GKE:
kubectl set image deployment/monolith monolith=gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:3.0.0
- 前往瀏覽器中的單體應用程式,然後前往「產品」頁面,確認應用程式現在會連至新的產品微服務。所有產品名稱都應加上 MS- 前置字元,如下所示:

- 點選「Check my progress」,確認目標已達成。
將產品遷移至微服務
工作 6:將前端遷移至微服務
遷移程序的最後一步,是將前端程式碼移至微服務,並關閉單體應用程式!完成這個步驟後,您就成功將單體應用程式遷移至微服務架構了!
建立新的前端微服務
按照前兩個步驟的相同程序,建立新的前端微服務。
先前重建單體應用程式時,您更新了設定,將其指向單體應用程式。現在,您需要對前端微服務使用相同的設定。
- 執行下列指令,將微服務網址設定檔複製到前端微服務程式碼集:
cd ~/monolith-to-microservices/react-app
cp .env.monolith .env
npm run build
-
完成後,請按照與先前步驟相同的程序操作。執行下列指令,建構 Docker 容器、部署容器,並透過 Kubernetes 服務公開容器。
-
使用 Google Cloud Build 建立 Docker 容器:
cd ~/monolith-to-microservices/microservices/src/frontend
gcloud builds submit --tag gcr.io/${GOOGLE_CLOUD_PROJECT}/frontend:1.0.0 .
- 將容器部署至 GKE:
kubectl create deployment frontend --image=gcr.io/${GOOGLE_CLOUD_PROJECT}/frontend:1.0.0
- 公開 GKE 容器:
kubectl expose deployment frontend --type=LoadBalancer --port 80 --target-port 8080
- 點選「Check my progress」,確認目標已達成。
將前端遷移至微服務
刪除單體應用程式
現在所有服務都以微服務的形式運作了,請刪除單體應用程式!在實際遷移作業時,您也需要變更 DNS 等設定,讓現有的網域名稱指向應用程式的新前端微服務。
kubectl delete deployment monolith
kubectl delete service monolith
測試作品
如要確認一切正常運作,單體服務的舊 IP 位址現在應該無法運作,而前端服務的新 IP 位址應會代管新應用程式。
- 如要查看所有服務和 IP 位址的清單,請執行下列指令:
kubectl get services
輸出內容應類似以下所示:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
frontend LoadBalancer 10.39.246.135 35.227.21.154 80:32663/TCP 12m
kubernetes ClusterIP 10.39.240.1 443/TCP 18d
orders LoadBalancer 10.39.243.42 35.243.173.255 80:32714/TCP 31m
products LoadBalancer 10.39.250.16 35.243.180.23 80:32335/TCP 21m
確認前端微服務的外部 IP 位址後,請複製這個 IP 位址。將瀏覽器指向這個網址 (如 http://203.0.113.0),以檢查您的前端是否能存取。網站應與將單體式應用程式拆解為微服務前相同!
恭喜!
您已成功將單體式應用程式拆分為微服務,並部署至 Google Kubernetes Engine!
後續步驟/其他資源
Google Cloud 教育訓練與認證
協助您瞭解如何充分運用 Google Cloud 的技術。我們的課程會介紹專業技能和最佳做法,讓您可以快速掌握要領並持續進修。我們提供從基本到進階等級的訓練課程,並有隨選、線上和虛擬課程等選項,方便您抽空參加。認證可協助您驗證及證明自己在 Google Cloud 技術方面的技能和專業知識。
使用手冊上次更新日期:2024 年 4 月 26 日
實驗室上次測試日期:2023 年 9 月 20 日
Copyright 2026 Google LLC 保留所有權利。Google 和 Google 標誌是 Google LLC 的商標,其他公司和產品名稱則有可能是其關聯公司的商標。