检查点
Create the lab resources
/ 20
Create the Cloud Build Triggers
/ 20
Deploy the first versions of the application
/ 20
Deploy the second versions of the application
/ 20
Roll back the production deployment
/ 20
在 Google Cloud 實作 DevOps 工作流程:挑戰實驗室
GSP330
總覽
在挑戰研究室中,您會在特定情境下完成一系列任務。挑戰研究室不會提供逐步說明,您將運用從課程研究室學到的技巧,自行找出方法完成任務!自動評分系統 (如本頁所示) 將根據您是否正確完成任務來提供意見回饋。
在您完成任務的期間,挑戰研究室不會介紹新的 Google Cloud 概念。您須靈活運用所學技巧,例如變更預設值或詳讀並研究錯誤訊息,解決遇到的問題。
若想滿分達標,就必須在時限內成功完成所有任務!
這個研究室適合報名 Implement DevOps Workflows in Google Cloud 課程的學員。準備好迎接挑戰了嗎?
點選「Start Lab」按鈕前的須知事項
請詳閱以下操作說明。研究室活動會計時,而且中途無法暫停。點選「Start Lab」 後就會開始計時,讓您瞭解有多少時間可以使用 Google Cloud 資源。
您將在真正的雲端環境中完成實作研究室活動,而不是在模擬或示範環境。為達此目的,我們會提供新的暫時憑證,讓您用來在研究室活動期間登入及存取 Google Cloud。
如要完成這個研究室活動,請先確認:
- 您可以使用標準的網際網路瀏覽器 (Chrome 瀏覽器為佳)。
- 是時候完成研究室活動了!別忘了,活動一開始將無法暫停。
挑戰情境
幾個月前,您剛受僱為 Cymbal Superstore 的 DevOps 工程師,如今已瞭解公司電子商務網站的運作細節。具體來說,DevOps 團隊正在建構大規模的 CI/CD pipeline,希望能獲得您的協助。有了這個管道,公司就能幫助開發人員將工作自動化、提升與其他團隊的合作效率,並更頻繁可靠地發布軟體。Cymbal Superstore 希望能完全使用原生的 Google Cloud 服務建構管道,您在 Cloud Source Repositories、Artifact Registry、Docker 和 Cloud Build 的經驗會很有幫助。
在開始這項專案前,DevOps 團隊想先請您展現新技能。為此他們列出了一張工作清單,希望您在沙箱環境和規定的時間內完成。
您的挑戰
要完成的工作如下:
- 根據提供的設定建立 GKE 叢集。
- 建立 Google 原始碼存放區,以託管 Go 應用程式程式碼。
- 建立 Cloud Build 觸發條件,以部署正式版和開發版應用程式。
- 將更新內容推送至應用程式並建立新版本。
- 將正式版應用程式復原至前一個版本。
整體而言,您會使用 Cloud Source Repositories、Artifact Registry 和 Cloud Build 建立簡單的 CI/CD pipeline。
工作 1:建立研究室資源
在本節中,您會為示範環境初始化 Google Cloud 專案。您將啟用必要 API、在 Cloud Shell 設定 Git、建立 Artifact Registry Docker 存放區,並建立 GKE 叢集來執行正式版和開發版應用程式。
- 執行下列指令,啟用 GKE、Cloud Build 和 Cloud Source Repositories 的 API:
- 為 Cloud Build 服務帳戶新增 Kubernetes 開發人員角色:
- 執行下列指令,在 Cloud Shell 設定 Git。將
<email>
改為您的研究室電子郵件地址,並將<name>
改為您的名字。
-
在
區域建立名為 my-repository 的 Artifact Registry Docker 存放區,以儲存容器映像檔。 -
建立名為
hello-cluster
的 GKE Standard 叢集,並使用下列設定:
設定 | 值 |
---|---|
可用區 | |
發布版本 | 一般 |
叢集版本 |
1.29 以上版本
|
叢集自動配置器 | 已啟用 |
節點數量 | 3 |
節點數量下限 | 2 |
節點數量上限 | 6 |
- 在叢集建立
prod
和dev
命名空間。
點選「Check my progress」,確認目標已達成。
工作 2:在 Cloud Source Repositories 建立存放區
在這項工作中,您會在 Cloud Source Repositories 建立名為 sample-app 的存放區,並使用程式碼範例來初始化。這個存放區會用來保存 Go 應用程式程式碼,也是觸發建構作業的主要來源。
-
在 Cloud Source Repositories 建立名為 sample-app 的空存放區。
-
在 Cloud Shell 複製 sample-app Cloud 原始碼存放區。
-
使用下列指令,將程式碼範例複製到
sample-app
目錄:
- 執行下列指令,系統會使用您專案指定的區域和可用區,自動替換
cloudbuild-dev.yaml
和cloudbuild.yaml
檔案中的<your-region>
和<your-zone>
預留位置:
-
使用新增至
sample-app
目錄的程式碼範例進行首次修訂,接著將變更內容推送至 master 分支版本。 -
建立名為 dev 的分支版本。使用新增至 sample-app 目錄的程式碼範例進行修訂,接著將變更內容推送至
dev
分支版本。 -
確認程式碼範例和各分支版本已儲存至原始碼存放區。
您剛才複製的程式碼包含簡單的 Go 應用程式,其中有兩個進入點:Red 和 Blue。每個進入點都會在網頁上會顯示簡單的有色方塊,顯示的顏色取決於您選擇的進入點。
點選「Check my progress」,確認目標已達成。
工作 3:建立 Cloud Build 觸發條件
在本節中,您會建立兩項 Cloud Build 觸發條件。
-
第一項觸發條件會監聽
master
分支版本,在出現變更時建構應用程式的 Docker 映像檔,並推送至 Google Artifact Registry,接著將最新版本的映像檔部署到 GKE 叢集的 prod 命名空間。 -
第二項觸發條件會監聽
dev
分支版本,在出現變更時建構應用程式的 Docker 映像檔,並推送至 Google Artifact Registry,接著將最新版本的映像檔部署到 GKE 叢集的 dev 命名空間。
-
使用下列設定,建立名為 sample-app-prod-deploy 的 Cloud Build 觸發條件:
- 事件:推送至分支版本
- 原始碼存放區:
sample-app
- 分支版本:
^master$
- Cloud Build 設定檔:
cloudbuild.yaml
-
使用下列設定,建立名為 sample-app-dev-deploy 的 Cloud Build 觸發條件:
- 事件:推送至分支版本
- 原始碼存放區:
sample-app
- 分支版本:
^dev$
- Cloud Build 設定檔:
cloudbuild-dev.yaml
觸發條件設定完成後,分支版本的任何變更都會觸發相應的 Cloud Build 管道,接著該管道就會根據 cloudbuild.yaml
檔案建構及部署應用程式。
點選「Check my progress」,確認目標已達成。
工作 4:部署應用程式的最初版本
在本節中,您會建構正式版和開發版應用程式的最初版本。
建構第一個開發版部署項目
-
在 Cloud Shell 查看 sample-app 目錄中的
cloudbuild-dev.yaml
檔案,瞭解建構程序的各個步驟。將cloudbuild-dev.yaml
檔案第 9 和 13 行程式碼的<version>
換成v1.0
。 -
前往
dev/deployment.yaml
檔案,將第 17 行程式碼的<todo>
更新為正確的容器映像檔名稱。此外,也請將PROJECT_ID
變數換成容器映像檔名稱中實際的專案 ID。
-
在
dev
分支版本進行修訂並推送變更,以觸發 sample-app-dev-deploy 的建構工作。 -
在 Cloud Build 的「記錄」頁面確認建構作業已順利執行,接著確認 development-deployment 應用程式已部署到叢集的
dev
命名空間。 -
在通訊埠 8080 向名為
dev-deployment-service
的 LoadBalancer 服務公開 development-deployment 部署項目,並依 Dockerfile 的指定內容,設定容器的目標通訊埠。 -
前往該服務的負載平衡器 IP,並在網址結尾加上
/blue
進入點,確認應用程式已開始運作。網址應如下所示:http://34.135.97.199:8080/blue
。
建構第一個正式版部署項目
-
改為前往
master
分支版本。查看 sample-app 目錄中的cloudbuild.yaml
檔案,瞭解建構程序的各個步驟。將cloudbuild.yaml
檔案第 11 和 16 行程式碼的<version>
換成v1.0
。 -
前往
prod/deployment.yaml
檔案,將第 17 行程式碼的<todo>
更新為正確的容器映像檔名稱。此外,也請將PROJECT_ID
變數換成容器映像檔名稱中實際的專案 ID。
-
在
master
分支版本進行修訂並推送變更,以觸發 sample-app-prod-deploy 的建構工作。 -
在 Cloud Build 的「記錄」頁面確認建構作業已順利執行,接著確認 production-deployment 應用程式已部署到叢集的
prod
命名空間。 -
在通訊埠 8080 向名為
prod-deployment-service
的 LoadBalancer 服務公開prod
命名空間的 production-deployment 部署項目,並依 Dockerfile 的指定內容,設定容器的目標通訊埠。 -
前往該服務的負載平衡器 IP,並在網址結尾加上
/blue
進入點,確認應用程式已開始運作。網址應如下所示:http://34.135.245.19:8080/blue
。
點選「Check my progress」,確認目標已達成。
工作 5:部署應用程式的第二個版本
在本節中,您會建構正式版和開發版應用程式的第二個版本。
建構第二個開發版部署項目
- 返回
dev
分支版本。
- 將
main.go
檔案中的main()
函式更新為下列程式碼:
- 在
main.go
檔案加入下列函式:
-
查看
cloudbuild-dev.yaml
檔案,瞭解建構程序的各個步驟。將 Docker 映像檔的版本更新為v2.0
。 -
前往
dev/deployment.yaml
檔案,將容器映像檔名稱更新為新版本v2.0
。 -
在
dev
分支版本進行修訂並推送變更,以觸發 sample-app-dev-deploy 的建構工作。 -
在 Cloud Build 的「記錄」頁面確認建構作業已順利執行,接著確認 development-deployment 應用程式已部署到叢集的
dev
命名空間,且使用的是v2.0
映像檔。 -
前往該服務的負載平衡器 IP,並在網址結尾加上
/red
進入點,確認應用程式已開始運作。網址應如下所示:http://34.135.97.199:8080/red
。
建構第二個正式版部署項目
- 改為前往
master
分支版本。
- 將
main.go
檔案中的main()
函式更新為下列程式碼:
- 在
main.go
檔案加入下列函式:
-
查看
cloudbuild.yaml
檔案,瞭解建構程序的各個步驟。將 Docker 映像檔的版本更新為v2.0
。 -
前往
prod/deployment.yaml
檔案,將容器映像檔名稱更新為新版本v2.0
。 -
在
master
分支版本進行修訂並推送變更,以觸發 sample-app-prod-deploy 的建構工作。 -
在 Cloud Build 的「記錄」頁面確認建構作業已順利執行,接著確認 production-deployment 應用程式已部署到叢集的
prod
命名空間,且使用的是v2.0
映像檔。 -
前往該服務的負載平衡器 IP,並在網址結尾加上
/red
進入點,確認應用程式已開始運作。網址應如下所示:http://34.135.245.19:8080/red
。
太好了!您已成功為正式版和開發版應用程式建立運作正常的 CI/CD 管道。
點選「Check my progress」,確認目標已達成。
工作 6:復原正式版部署項目
在本節中,您會將正式版部署項目復原至前一個版本。
- 復原 production-deployment,以使用應用程式的
v1.0
版本。
- 前往該服務的負載平衡器 IP,並在正式版部署項目的網址結尾加上
/red
進入點。頁面應會顯示404
。
點選「Check my progress」,確認目標已達成。
恭喜!
恭喜!您在這個研究室中證明了自己的技能,順利在 Google Cloud 實作開發運作工作流程。您首先建立了用於執行應用程式的 GKE 叢集,以及用於託管程式碼集的 git 存放區。接著您建立 Cloud Build 觸發條件、修改程式碼和範本,並將更新內容推送至存放區,在該處建立了開發版和正式版應用程式的最初版本。您也將更新內容推送至應用程式以建立新版本,再將正式版應用程式復原至前一個版本。您現在已準備好在自己的環境進行開發運作工作了!
取得下一枚技能徽章
這個自學實驗室是 Implement DevOps Workflows in Google Cloud 課程的一部分。完成這個技能徽章課程即可獲得上方的徽章,表彰您的成就。您可以在履歷表和社群平台張貼徽章,並加上 #GoogleCloudBadge 公開這項成就。
這個技能徽章課程是 Google Cloud 雲端開發運作工程師學習路徑的一部分。您可以報名 Monitor and Log with Google Cloud Observability 課程,繼續精進專業能力。
Google Cloud 教育訓練與認證
協助您瞭解如何充分運用 Google Cloud 的技術。我們的課程會介紹專業技能和最佳做法,讓您可以快速掌握要領並持續進修。我們提供從基本到進階等級的訓練課程,並有隨選、線上和虛擬課程等選項,方便您抽空參加。認證可協助您驗證及證明自己在 Google Cloud 技術方面的技能和專業知識。
手冊上次更新日期:2024 年 6 月 26 日
實驗室上次測試日期:2024 年 6 月 26 日
Copyright 2024 Google LLC 保留所有權利。Google 和 Google 標誌是 Google LLC 的商標,其他公司和產品名稱則有可能是其關聯公司的商標。