
准备工作
- 实验会创建一个 Google Cloud 项目和一些资源,供您使用限定的一段时间
- 实验有时间限制,并且没有暂停功能。如果您中途结束实验,则必须重新开始。
- 在屏幕左上角,点击开始实验即可开始
Create a Kubernetes cluster
/ 20
Configure and Install Jenkins
/ 20
Create the production and canary deployments
/ 30
Build for the 'new-feature' branch
/ 10
Deploying a canary release
/ 10
Deploying to production
/ 10
在本實驗室,您將瞭解如何在 Kubernetes Engine 使用 Jenkins
設定持續推送軟體更新管道。開發人員若經常需要將程式碼整合至共用存放區,通常會選用 Jenkins 這款自動化伺服器。您在本實驗室建構的解決方案,架構會與下圖類似:
請前往 Cloud Architecture Center,查看 Jenkins 在 Kubernetes Engine 的運作方式,進一步瞭解如何在 Kubernetes 執行 Jenkins。
在本實驗室,您將完成下列工作,瞭解如何在 Kubernetes 執行 Jenkins:
本實驗室屬於進階實作活動。開始之前,至少須熟悉殼層程式設計、Kubernetes 和 Jenkins 的基本概念。下列幾個實驗室可協助您快速掌握相關知識:
準備好之後,請向下捲動,進一步瞭解 Kubernetes、Jenkins 和持續推送軟體更新機制。
Kubernetes Engine 是 Google Cloud 的 Kubernetes
託管版,這套叢集管理與自動化調度管理系統專為容器設計,功能非常強大。Kubernetes 是一個開放原始碼專案,能在多種不同的環境中運作,包括筆記型電腦、高可用性的多節點叢集、虛擬機器和裸機等。如先前所述,Kubernetes 應用程式是以容器為建構基礎,這是一種輕量型應用程式,包含運作所需的所有依附元件和程式庫。正因為採用這種底層結構,Kubernetes 應用程式的可用性和安全性都極高,部署也很快速,對雲端開發人員而言,是理想的架構選擇。
Jenkins 是一套開放原始碼的自動化伺服器,可讓您靈活地自動調度並管理建構、測試和部署管道。透過 Jenkins,開發人員能快速執行專案的疊代作業,不必擔心持續推送軟體更新可能造成的額外負擔。
如需設定持續推送軟體更新 (CD) 管道,可選擇將 Jenkins 部署至 Kubernetes Engine,因為這種做法比標準 VM 部署方式更具效益,能帶來許多重要優勢。
如果建構程序使用容器,同一個虛擬主機便可橫跨多個作業系統執行工作。Kubernetes Engine 會提供臨時的建構執行器,只有在建構期間才會使用,這樣資源就能留給批次處理等其他叢集工作。此外,這類執行器還有另一項優點,就是「速度快」,能在幾秒內完成啟動。
Kubernetes Engine 還預先搭載 Google 的全域負載平衡器,可自動將網路流量轉送至執行個體。該負載平衡器會處理 SSL 終止作業,並使用以 Google 骨幹網路設定的全球 IP 位址。如果搭配網站前端,使用者就能透過最快的路徑連至應用程式執行個體。
對於 Kubernetes、Jenkins 及兩者在 CD 管道的互動方式,您已有初步的瞭解,接下來可開始建構了!
請詳閱以下操作說明。實驗室活動會計時,且中途無法暫停。點選「Start Lab」後就會開始計時,顯示可使用 Google Cloud 資源的時間。
您將在真正的雲端環境完成實作實驗室活動,而不是模擬或示範環境。為此,我們會提供新的暫時憑證,供您在實驗室活動期間登入及存取 Google Cloud。
為了順利完成這個實驗室,請先確認:
點選「Start Lab」按鈕。如果實驗室會產生費用,畫面上會出現選擇付款方式的對話方塊。左側的「Lab Details」窗格會顯示下列項目:
點選「Open Google Cloud console」;如果使用 Chrome 瀏覽器,也能按一下滑鼠右鍵,選取「在無痕視窗中開啟連結」。
接著,實驗室會啟動相關資源,並開啟另一個分頁,顯示「登入」頁面。
提示:您可以在不同的視窗中並排開啟分頁。
如有必要,請將下方的 Username 貼到「登入」對話方塊。
您也可以在「Lab Details」窗格找到 Username。
點選「下一步」。
複製下方的 Password,並貼到「歡迎使用」對話方塊。
您也可以在「Lab Details」窗格找到 Password。
點選「下一步」。
按過後續的所有頁面:
Google Cloud 控制台稍後會在這個分頁開啟。
Cloud Shell 是搭載多項開發工具的虛擬機器,提供永久的 5 GB 主目錄,而且在 Google Cloud 中運作。Cloud Shell 提供指令列存取權,方便您使用 Google Cloud 資源。
點按 Google Cloud 控制台頂端的「啟用 Cloud Shell」圖示 。
系統顯示視窗時,請按照下列步驟操作:
連線建立完成即代表已通過驗證,而且專案已設為您的 Project_ID:
gcloud
是 Google Cloud 的指令列工具,已預先安裝於 Cloud Shell,並支援 Tab 鍵自動完成功能。
輸出內容:
輸出內容:
gcloud
的完整說明,請前往 Google Cloud 參閱 gcloud CLI 總覽指南。
在這項工作中,您將下載本實驗室要用的原始碼。
建立 Kubernetes 叢集並啟用 Jenkins,以便存取 GitHub 存放區及 Google Container Registry。
這個步驟會在幾分鐘內完成。額外指定範圍後,Jenkins 就能存取 GitHub 存放區及 Google Container Registry。
點選「Check my progress」,確認工作已完成。如果已成功建立 Kubernetes 叢集,您就會看見評估分數。
Helm 是套件管理工具,協助您輕鬆設定及部署 Kubernetes 應用程式。安裝 Jenkins 後,便可設定 CI/CD 管道。
在這項工作中,您會使用 Helm 從資訊套件存放區安裝 Jenkins。
安裝 Jenkins 時,可使用 values
做為範本,提供設定所需的值。
您將透過 values
檔案,自動設定 Kubernetes Cloud 並新增下列必要的外掛程式:
這樣 Jenkins 就能連線至您的叢集和 Google Cloud 專案。
這個指令會在幾分鐘內執行完畢。
點選「Check my progress」,確認工作已完成。如果已成功設定 Jenkins 資訊套件,您就會看見評估分數。
Running
狀態,且容器處於 READY 狀態:輸出內容範例:
輸出內容應如下所示:
輸出內容範例:
您使用 Kubernetes 外掛程式,讓系統在 Jenkins 主要執行個體要求建構工具節點時,視需要自動啟動對應的節點。完成工作後,這些節點就會自動關閉,資源也會加回叢集的資源集區。
請注意,這項服務會對所有與選取條件
相符的 Pod,公開通訊埠 8080
和 50000
,也就是說,在 Kubernetes 叢集內公開 Jenkins 網頁 UI 和建構工具/代理程式註冊通訊埠。此外,jenkins-ui
服務會透過 ClusterIP 公開,不開放從叢集外部存取。
擷取管理員密碼並登入 Jenkins 介面。
在 Cloud Shell 動作列,依序點選「網頁預覽」圖示 和「透過以下通訊埠預覽:8080」,進入 Jenkins 使用者介面:
如果出現提示訊息,請透過 admin
這個使用者名稱和自動產生的密碼登入。
現在您已在 Kubernetes 叢集設定好 Jenkins!在接下來的幾個部分,Jenkins 將推動整個自動 CI/CD 管道的運作。
在這項工作中,您會在持續部署管道部署範例應用程式 gceme
。這個應用程式是以 Go 語言編寫,位於存放區的 sample-app 目錄。您在 Compute Engine 執行個體上執行 gceme 二進位檔時,該應用程式會在資訊卡中顯示執行個體的中繼資料。
這個應用程式支援兩種作業模式,透過這種方式模擬微服務。
將應用程式部署至下列兩種不同的環境:
kubectl apply
指令,建立正式環境和初期測試環境的部署項目及相關服務:點選「Check my progress」,確認工作已完成。如果已成功建立部署項目,您就會看見評估分數。
根據預設,系統只會部署一個前端副本。請使用 kubectl scale
指令,確保隨時都至少有 4 個副本正常運作。
輸出內容範例:
將外部 IP 貼至瀏覽器中,即可看到畫面上顯示資訊卡。您看到的頁面應與下圖類似:
在瀏覽器中開啟前端外部 IP 位址,確認兩種服務都正常運作。
執行下列指令,檢查服務的版本輸出結果 (應顯示為「1.0.0」):
您已成功部署範例應用程式!接下來要設定管道,以可靠的方式持續部署變更。
在這項工作中,您將按照下列步驟建立 Jenkins 管道:
gceme
範例應用程式的副本,並推送至 GitHub 存放區:在 Cloud Shell 執行下列指令,設定 Git 和 GitHub:
成功登入後,您的 GitHub 使用者名稱會出現在 Cloud Shell 輸出內容中。
系統不會向您收取這個存放區的費用,因此可以忽略警告。
設定憑證來允許 Jenkins 存取程式碼存放區。Jenkins 會使用叢集的服務帳戶憑證,從 GitHub 存放區下載程式碼。
在 Jenkins 使用者介面,點選左側導覽區中的「Manage Jenkins」,然後依序按一下「Security」>「Credentials」。
點選「System」。
點選「Global credentials (unrestricted)」。
點選右上角的「Add Credentials」。
在「Kind」下拉式選單,選取「Google Service Account from metadata」。
在「ID」欄位輸入專案 ID,然後點選「Create」。
全域憑證已加入。
http://cd-jenkins:8080
cd-jenkins-agent:50000
按照下方步驟操作,使用安全殼層金鑰完成 Jenkins 驗證,以便存取 GitHub 私人存放區:
a. 產生安全殼層金鑰
b. 將公開金鑰新增至 GitHub
產生安全殼層金鑰後,必須將公開金鑰新增至 GitHub,Jenkins 才能存取存放區。
登入 GitHub 帳戶。點選 github 個人資料,然後前往「Settings」。
選取側邊選單中的「SSH and GPG keys」。
點選「New SSH key」。
輸入「SSH_KEY_LAB」這個標題。
找到從 ~/continuous-deployment-on-kubernetes/sample-app/id_github.pub 這個路徑下載的公開金鑰 (id_github.pub),然後將金鑰內容貼至「Key」欄位。您也可以在「Title」欄位加入描述性名稱。
點選「Add SSH key」。
c. 將 Jenkins 設為使用安全殼層金鑰
前往 Jenkins,然後選取資訊主頁中的「Manage Jenkins」。
選取「Credentials」選項。
點選「Stores scoped to Jenkins」底下的「System」。
點選「Global credentials (unrestricted)」。
點選「Add Credentials」。
在「Kind」下拉式選單,選取「SSH Username with private key」。
「ID」請輸入
「Username」請輸入 [您的 GitHub 使用者名稱]。
選擇「Enter directly」做為私密金鑰的提供方式,並點選「Add」,貼上 id_github
檔案 (從 ~/continuous-deployment-on-kubernetes/sample-app/id_github
下載) 的內容。
點選「Create」。
d. 將公開安全殼層金鑰新增至已知主機
在 Cloud Shell 建立檔案並命名為 known_hosts.github,並將公開安全殼層金鑰加入這個檔案。
e. 設定已知的主機金鑰
在左側面板依序點選「Dashboard」>「Manage Jenkins」。
在「Security」 底下,點選「Security」。
在「Git Host Key Verification Configuration」底下,從「Host Key Verification Strategy」下拉式選單中選取「Manually provided keys」。
將 known hosts.github 檔案的內容貼到「Approved Host Keys」欄位。
點選「Save」。
前往 Jenkins 使用者介面,按照下列步驟設定 Pipeline 工作。
在左側面板依序點選「Dashboard」>「New Item」。
將專案命名為「sample-app」,選擇「Multibranch Pipeline」選項,再點選「OK」。
在下一頁的「Branch Sources」專區,從「Add Source」下拉式選單中選取「Git」。
在「Project Repository」欄位,貼上 sample-app 存放區的 HTTPS 複製網址。將 ${GITHUB_USERNAME}
改成您的 GitHub 使用者名稱:
在「Credentials」選單的選項中,選取 GitHub 憑證名稱。
在「Scan Multibranch Pipeline Triggers」專區底下,勾選「Periodically if not otherwise run」方塊,然後將「Interval」的值設為「1 minute」。
其餘選項的值都不更動,然後點選「Save」。
完成上述步驟後,系統就會執行 Branch indexing
工作。這個中繼工作會找出存放區中的分支版本,並確保現有分支版本沒有任何變動。如果點選左上方的 sample-app,應該會看到 master
工作。
您已成功建立 Jenkins 管道!接下來要建立開發環境,以便進行持續整合。
開發分支版本是一組環境,開發人員會先在這裡測試程式碼變更,再提交出去,以便整合至正式網站。這些環境是應用程式的簡化版,但部署時仍須採用和實際工作環境一樣的機制。
如要從功能分支版本建立開發環境,可將該分支版本推送至 Git 伺服器,讓 Jenkins 部署環境。
定義該管道的 Jenkinsfile
是使用 Jenkins Pipeline Groovy 語法編寫而成。如果使用 Jenkinsfile
,就能將整個建構管道編寫到同一個檔案中,而且該檔案會和原始碼放在一起。管道支援某些強大的功能,例如平行處理及要求使用者手動核准。
為了讓管道正常運作,請修改 Jenkinsfile
,設定專案 ID。
vi
:將 REPLACE_WITH_YOUR_PROJECT_ID
這個值改成您的 PROJECT_ID
(PROJECT_ID
就是專案 ID,可在實驗室的 CONNECTION DETAILS
專區找到)。您也能執行 gcloud config get-value project
來查詢該 ID。
將 CLUSTER_ZONE
的值變更為 gcloud config get compute/zone
來查詢這個值。
Jenkinsfile
檔案,按下 ESC 鍵,然後輸入下列內容 (適用於 vi
使用者):為了讓您體驗應用程式的變更流程,請將 gceme 資訊卡從藍色變更為橘色。
html.go
:<div class="card blue">
改成下列內容:html.go
檔案:按下 ESC 鍵,然後輸入下列內容:main.go
:將該行更新為下列內容:
在這項工作中,您將部署開發環境。
執行上述指令後,就會啟動開發環境的建構作業。
將變更推送至 Git 存放區之後,請前往 Jenkins 使用者介面,您會看到 new-feature
分支版本的建構作業已啟動。系統會在一分鐘內接收到變更。
kubectl --namespace=new-feature apply...
訊息。該訊息出現時,就表示系統正在將 new-feature 分支版本部署至叢集。如果建構執行工具
中未顯示任何內容,別擔心。只要前往 Jenkins 首頁 >「sample app」,就能確認 new-feature
管道是否已建立。
localhost
,讓 kubectl
Proxy 將要求轉送至服務,確認應用程式可正常存取:回應內容應該會顯示 2.0.0,也就是正在執行的版本。
如果收到類似下列內容的錯誤訊息:
curl
指令。看到下列輸出內容時,即可繼續操作:您已設定開發環境!接下來要延伸在先前單元學到的內容,部署初期測試版來測試新功能。
點選「Check my progress」,確認工作已完成。如果已成功啟動 new-feature 分支版本的建構作業,您就會看見評估分數。
new-feature
分支版本
您已確認應用程式在開發環境中執行的是最新程式嗎,接下來要將該程式碼部署至初期測試環境。
2.0.0
:任務完成!您已部署初期測試版,接著要將新版本部署至正式環境。
點選「Check my progress」,確認工作已完成。如果已成功部署初期測試版,您就會看見評估分數。
初期測試版已成功部署,而且未收到任何客訴,現在請將新版本部署至正式環境機群的其他部分。
在 Jenkins 中,您應該會看到主要管道已啟動。
點選「Check my progress」,確認工作已完成。如果已成功啟動主要管道,您就會看見評估分數。
1.0.0
,請重新執行上方的指令。確認結果正常後,請按下 CTRL+C,停止執行這項指令。輸出內容範例:
您也能前往 gceme 應用程式顯示資訊卡的網站,應該可看到資訊卡已從藍色變成橘色。
輸出內容範例:
完成下列選擇題能加深您的印象,更清楚本實驗室介紹的概念,盡力回答即可。
大功告成!
太棒了,您已成功將應用程式部署至正式環境。
本實作實驗室到此結束。您已順利在 Kubernetes Engine 部署並操作 Jenkins,建構能正常運作的持續推送軟體更新/持續部署管道。透過這次機會,您得以體驗如何在 Kubernetes Engine 部署重要的 DevOps 工具,並妥善設定,以便在正式環境中使用,過程中還實際運用 kubectl 指令列工具和 YAML 檔案中的部署設定。不僅如此,您也初步瞭解如何設定 Jenkins 管道,支援開發/部署程序。有了這次的實作經驗,您應該能放心在自己的 DevOps 環境中應用這些工具。
協助您瞭解如何充分運用 Google Cloud 的技術。我們的課程會介紹專業技能和最佳做法,讓您可以快速掌握要領並持續進修。我們提供從基本到進階等級的訓練課程,並有隨選、線上和虛擬課程等選項,方便您抽空參加。認證可協助您驗證及證明自己在 Google Cloud 技術方面的技能和專業知識。
使用手冊上次更新日期:2025 年 6 月 10 日
實驗室上次測試日期:2025 年 6 月 10 日
Copyright 2025 Google LLC 保留所有權利。Google 和 Google 標誌是 Google LLC 的商標,其他公司和產品名稱則有可能是其關聯公司的商標。
此内容目前不可用
一旦可用,我们会通过电子邮件告知您
太好了!
一旦可用,我们会通过电子邮件告知您
一次一个实验
确认结束所有现有实验并开始此实验