在本教學課程中,您將部署一個前端使用 Node.js、後端使用 MySQL 的 Logbook 範例應用程式。教學課程結束時,您的部署作業會具有下列資源:
如果您是第一次使用 Deployment Manager,請參閱快速入門導覽課程或逐步指南教學課程。
事前準備
- 如要使用本指南提供的指令列範例,請安裝 `gcloud` 指令列工具。
- 如要使用本指南提供的 API 範例,請設定 API 存取權。
- 閱讀 Compute Engine 網路負載平衡總覽。
- 閱讀 Docker 容器總覽。
建立資源範本
本範例會啟動包含各種 Google Cloud資源的部署作業。首先,您會建立範本,分別定義這些資源。稍後,您會在最終設定中呼叫這些範本。您的部署作業包含下列資源:
- Compute Engine 執行個體,用於託管應用程式的 MySQL 資料庫。
- 前端執行個體的執行個體範本,使用 Node.js 應用程式的 Docker 映像檔。
- 代管執行個體群組,會使用執行個體範本建立兩個前端執行個體。
- 自動配置器,會根據連入流量啟動或停止其他前端執行個體。
- 健康狀態檢查,會檢查前端執行個體是否能順利執行工作。
- 具有轉送規則的網路負載平衡器。
- 代管執行個體群組的目標集區。
為 MySQL 後端建立範本
本應用程式的後端是執行 MySQL Docker 容器的單一 Compute Engine 執行個體。container_vm.py
範本會定義可執行 Docker 容器的 Compute Engine 執行個體。為確保範本符合正確的結構,並且包含所有必要屬性,您還需要一個結構定義檔。
請複製下方的範本,或從 GitHub 存放區下載:
範本中有一些未定義的屬性 (例如 containerImage
),將會在後續的範本中定義。
在 Compute Engine 執行個體上使用容器映像檔時,您還需要提供資訊清單檔案,以說明要使用的容器映像檔。建立名為 container_helper.py
的輔助方法,以動態方式定義容器資訊清單:
為 Node.js 前端建立範本
應用程式前端會執行 Node.js,並允許使用者在網頁中張貼訊息。前端會在虛擬機器執行個體群組上執行,並由自動調度器和負載平衡器提供支援。如要建立前端範本,請按照下列指示操作。
建立「執行個體範本」資源。
您需要使用執行個體範本來建立代管執行個體群組,這是一組可做為單一實體控管的相同虛擬機器 (VM) 執行個體。
建立名為
container_instance_template.py
的檔案,並下載範本的結構定義:建立自動配置器、代管執行個體群組和負載平衡器。
接著,建立另一個使用
container_instance_template.py
範本的範本和其餘前端資源,包含自動配置器、負載平衡器和代管執行個體群組。
這個範本包含下列資源:
使用
container_instance_template.py
範本的「執行個體範本」。使用執行個體範本的「代管執行個體群組」,以及參照代管執行個體群組的「自動調度器」。使用參照可確保 Deployment Manager 會以特定順序建立資源。在本例中,代管執行個體群組是在自動配置器之前建立。
「網路負載平衡器」包含下列資源:
- 具有單一外部 IP 位址且向網際網路公開的轉送規則。
- 包含您先前建立的代管執行個體群組的目標集區。
- 要附加到目標集區的健康狀態檢查。
建立名為 frontend.py
的檔案,並下載範本的結構定義:
建立整合範本
最後,建立能整合前後端範本的範本。建立名為 nodejs.py
的檔案,並在當中加入下列內容:
請注意,應用程式的前端名為 env["deployment"]-frontend
,後端的名稱也類似。部署應用程式時,Deployment Manager 會自動將 env["deployment"]
替換為部署名稱。
建立設定
所有範本準備就緒後,您可以建立用於部署資源的設定。建立名為 nodejs.yaml
的設定檔,並在當中加入下列內容:
將 ZONE_TO_RUN
替換為所需的資源所在區域,例如 us-central1-a
。
部署資源
現在可以部署您的資源。使用 Google Cloud CLI 執行下列指令:
gcloud deployment-manager deployments create advanced-configuration --config nodejs.yaml
部署完成後,Deployment Manager 會顯示已建立資源的摘要,您將看到類似以下的內容:
Waiting for create operation-1468522101491-5379cf2344539-5961abe8-a500190c...done.
Create operation operation-1468522101491-5379cf2344539-5961abe8-a500190c completed successfully.
NAME TYPE STATE ERRORS
advanced-configuration-application-fw compute.v1.firewall COMPLETED []
advanced-configuration-backend compute.v1.instance COMPLETED []
advanced-configuration-frontend-as compute.v1.autoscaler COMPLETED []
advanced-configuration-frontend-hc compute.v1.httpHealthCheck COMPLETED []
advanced-configuration-frontend-igm compute.v1.instanceGroupManager COMPLETED []
advanced-configuration-frontend-it compute.v1.instanceTemplate COMPLETED []
advanced-configuration-frontend-lb compute.v1.forwardingRule COMPLETED []
advanced-configuration-frontend-tp compute.v1.targetPool COMPLETED []
測試應用程式
如要測試應用程式,請先查詢轉送規則,以取得提供流量的外部 IP 位址:
$ gcloud compute forwarding-rules describe advanced-configuration-frontend-lb --region us-central1 IPAddress: 104.154.81.44 IPProtocol: TCP creationTimestamp: '2016-07-14T11:48:37.228-07:00' description: '' id: '9033201246750269546' kind: compute#forwardingRule name: advanced-configuration-frontend-lb portRange: 8080-8080 region: https://www.googleapis.com/compute/v1/projects/myproject/regions/us-central1 selfLink: https://www.googleapis.com/compute/v1/projects/myproject/regions/us-central1/forwardingRules/advanced-configuration-frontend-lb target: https://www.googleapis.com/compute/v1/projects/myproject/regions/us-central1/targetPools/advanced-configuration-frontend-tp
在本範例中,外部 IP 為 104.154.81.44
。
接著,在瀏覽器中前往通訊埠為 8080 的外部 IP 位址。舉例來說,如果您的外部 IP 位址為 104.154.81.44
,則網址為:
http://104.154.81.44:8080
您應該會看到空白頁面,這是正常的。接下來,請在網頁中張貼訊息。請前往下列網址:
http://104.154.81.44:8080?msg=hellothere!
系統會顯示確認訊息,說明已新增訊息。返回主要網址,該頁面現在應該會顯示以下訊息:
hellothere!
您現在已部署應用程式,可以記錄傳送給該應用程式的訊息。
後續步驟
完成本範例後,您可以:
- 運用本範例部署含有您自己 Docker 容器的執行個體。如要修改本教學課程中使用的 Docker 容器,請在 GitHub 存放區中的 Dockerfile 修改。
- 前往 Deployment Manager GitHub 存放區查看更多部署範例。
- 進一步瞭解範本和部署作業。