arrow_back

將應用程式部署至 Google Cloud

登录 加入
访问 700 多个实验和课程

將應用程式部署至 Google Cloud

实验 1 小时 30 分钟 universal_currency_alt 5 积分 show_chart 入门级
info 此实验可能会提供 AI 工具来支持您学习。
访问 700 多个实验和课程

總覽

在本研究室中,您會將應用程式部署至 App Engine、Kubernetes Engine 和 Cloud Run 等 Google Cloud 服務。

App Engine、Kubernetes Engine 和 Cloud Run 等 Google Cloud 服務架構

目標

在本實驗室中,您將瞭解如何執行下列工作:

  • 從 GitHub 下載範例應用程式
  • 部署至 App Engine
  • 部署至 Kubernetes Engine
  • 部署至 Cloud Run

設定研究室環境

在每個研究室中,您都能在固定時間內免付費建立新的 Google Cloud 專案,並使用一組資源。

  1. 請透過無痕式視窗登入 Qwiklabs。

  2. 請記下研究室的存取時間 (例如 1:15:00),並確保自己能在時間限制內完成作業。
    研究室不提供暫停功能。如有需要,您可以重新開始,但原先的進度恕無法保留。

  3. 準備就緒後,請按一下「Start lab」

  4. 請記下研究室憑證 (使用者名稱密碼),這組資訊將用於登入 Google Cloud 控制台。

  5. 按一下「Open Google Console」

  6. 按一下「Use another account」,然後複製這個研究室的憑證,並貼入提示訊息。
    如果使用其他憑證,系統會顯示錯誤或向您收取費用

  7. 接受條款,然後略過資源復原頁面。

工作 1:建立簡易的 Python 應用程式

若要進行管理作業,您需要一些原始碼,因此請建立簡易的 Python Flask 網頁應用程式。這個應用程式的功能只會稍微優於「Hello World」,但足以用來測試您將建構的 pipeline。

  1. 在 Cloud 控制台中,按一下「啟用 Cloud Shell」圖示 「啟用 Cloud Shell」圖示
  2. 如果出現提示訊息,請點選「繼續」

3.9. 在 Cloud Shell 輸入下列指令來建立資料夾,並將資料夾命名為 gcp-course

mkdir gcp-course
  1. 切換到剛剛建立的資料夾:
cd gcp-course
  1. 建立資料夾,並命名為 deploying-apps-to-gcp
mkdir deploying-apps-to-gcp
  1. 切換到剛剛建立的資料夾:
cd deploying-apps-to-gcp
  1. 在 Cloud Shell 按一下「開啟編輯器」(編輯器圖示),即可開啟程式碼編輯器。如果出現提示訊息,請點選「在新視窗中開啟」
  2. 從左側的探索工具樹狀結構依序選取「gcp-course」>「deploying-apps-to-gcp」資料夾。
  3. 點選「deploying-apps-to-gcp」
  4. 點選「New File」
  5. 將檔案命名為 main.py,並按下 Enter 鍵。
  6. 將下列程式碼貼入剛剛建立的資料夾:
from flask import Flask, render_template, request app = Flask(__name__) @app.route("/") def main(): model = {"title": "Hello GCP."} return render_template('index.html', model=model) if __name__ == "__main__": app.run(host='0.0.0.0', port=8080, debug=True, threaded=True)
  1. 按下 Ctrl + S 鍵來儲存變更。
  2. 點選「deploying-apps-to-gcp」資料夾。
  3. 點選「New Folder」
  4. 將資料夾命名為 templates,並按下 Enter 鍵。
  5. 在「templates」資料夾上按一下右鍵,建立新的檔案,並命名為 layout.html
  6. 新增下列程式碼,並和先前一樣儲存檔案:
<!doctype html> <html lang="en"> <head> <title>{{model.title}}</title> <!-- Bootstrap CSS --> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"> </head> <body> <div class="container"> {% block content %}{% endblock %} <footer></footer> </div> </body> </html>
  1. 此外,請在 templates 資料夾中新增另一個檔案,並命名為 index.html

  2. 新增下列程式碼,並和先前一樣儲存檔案:

{% extends "layout.html" %} {% block content %} <div class="jumbotron"> <div class="container"> <h1>{{model.title}}</h1> </div> </div> {% endblock %}
  1. 在 Python 中,您可以使用 pip 管理應用程式必要條件。現在請新增一個檔案,並在其中列出應用程式的必要條件。

  2. 切換至「deploying-apps-to-gcp」資料夾,而非「templates」資料夾。建立新檔案,將下列指令新增至該檔案並儲存為 requirements.txt

Flask==2.0.3 itsdangerous==2.0.1 Jinja2==3.0.3 werkzeug==2.2.2

工作 2:定義 Docker 建構作業

使用 Docker 的第一步,就是建立一個檔案並命名為 Dockerfile。這個檔案會定義 Docker 容器的建構方式。您現在就可以建立檔案。

  1. 在「deploying-apps-to-gcp」資料夾點選「New File」,並將新檔案命名為 Dockerfile

「Dockerfile」檔案會用來定義容器的建構方式。

  1. 新增下列程式碼:
FROM python:3.9 WORKDIR /app COPY . . RUN pip install gunicorn RUN pip install -r requirements.txt ENV PORT=8080 CMD exec gunicorn --bind :$PORT --workers 1 --threads 8 main:app
  1. 為測試程式,請輸入下列指令,建構映像檔的 Docker 容器:
docker build -t test-python .
  1. 輸入下列指令,執行 Docker 映像檔:
docker run --rm -p 8080:8080 test-python
  1. 如要查看執行中的程式,請點選 Google Cloud Shell 工具列中的「網頁預覽」圖示 (「網頁預覽」圖示)。接著選取「Preview on port 8080」

程式應該會顯示在新瀏覽器分頁中。

  1. 在 Cloud Shell 輸入 Ctrl+C 即可停止程式。

工作 3:部署至 App Engine

App Engine 是全自動化的部署平台,支援多種語言,包括 Python、Java、JavaScript 和 Go。如要使用 App Engine,您要透過一些簡單的指令來建立設定檔並部署應用程式。在這項工作中,您會建立名稱為「app.yaml」的檔案,並部署至 App Engine。

  1. 在 Cloud Shell 點選「開啟編輯器」「Cloud Shell 編輯器」圖示,然後按一下「在新視窗中開啟」 (如有需要)。
  2. 從左側的探索工具樹狀結構選取「gcp-course/deploying-apps-to-gcp」資料夾。
  3. 點選「New File」,將檔案命名為 app.yaml,然後按下 Enter 鍵。
  4. 將下列程式碼貼入剛剛建立的檔案中:
runtime: python39
  1. 點選「儲存」儲存變更。
注意:您可以在 app.yaml 檔案中新增其他設定,不過在目前的使用情境中,只需新增語言執行階段即可。
  1. 您必須在專案中建立 App Engine 應用程式。如要這麼做,只要執行 gcloud app create 指令,並指定用於建立應用程式的區域即可。點選「Open Terminal」(開啟終端機),然後輸入下列指令。如果出現提示訊息,請點選「Authorize」(授權)
gcloud app create --region={{{project_0.startup_script.app_region| Region}}}
  1. 現在輸入下列指令來部署應用程式:
gcloud app deploy --version=one --quiet 附註:這個指令會在幾分鐘內執行完畢。
  1. 前往 Google Cloud 控制台,在標題列的搜尋欄位輸入 App Engine,然後在搜尋結果中點選「App Engine」

  2. 資訊主頁右上角會顯示應用程式的連結,類似下圖:

應用程式連結範例

注意:根據預設,App Engine 應用程式的網址格式為 https://project-id.appspot.com
  1. 點選連結即可測試程式。

  2. 變更程式內容,瞭解 App Engine 如何讓您輕鬆管理版本。

  3. 在程式碼編輯器中,展開左側導覽窗格中的「/deploying-apps-to-gcp」資料夾,接著點選「main.py」開啟檔案。

  4. main() 函式中,將標題變更為 Hello App Engine,如下所示:

@app.route("/") def main(): model = {"title" "Hello App Engine"} return render_template('index.html', model=model)
  1. 在程式碼編輯器工作列中,依序點選「檔案」>「儲存」來儲存變更。

  2. 現在輸入下列指令來部署第二版:

gcloud app deploy --version=two --no-promote --quiet 注意:--no-promote 參數會讓 App Engine 繼續透過舊版本處理要求,讓您在用於實際工作環境之前,先測試新版本。
  1. 指令執行完成後,請返回 App Engine 資訊主頁。再次點選連結,仍會傳回第一版。系統應會傳回 Hello GCP,這是因為您在先前的指令中加入了 --no-promote 參數。

  2. 按一下左側的「版本」分頁標籤,您會發現畫面中列出了兩個版本。

注意:您可能要點選「重新整理」才能看見第二版
  1. 按一下第二版的連結來進行測試,系統應會傳回 Hello App Engine

  2. 如要將實際工作環境的流量遷移至第二版,請點選頂端的「拆分流量」。變更為第二版,然後點選「儲存」

  3. 請稍候幾分鐘,等待作業完成。重新整理先前傳回 Hello GCP 的瀏覽器分頁,現在應會傳回新版本。

點選「Check my progress」,確認目標已達成。部署至 App Engine

工作 4:透過 Cloud Build 和 Artifact Registry 部署至 Kubernetes Engine

透過 Kubernetes Engine,您可以建立機器叢集,並在叢集中部署任意數量的應用程式。Kubernetes 簡化了管理機器的繁瑣細節,讓您透過簡單的 CLI 指令自動化應用程式部署作業。

如要將應用程式部署至 Kubernetes,您必須先建立叢集,接著為每個要部署至叢集中的應用程式新增設定檔。

  1. 點選「導覽選單」(「導覽選單」圖示) 中的「Kubernetes Engine」。如果系統顯示 Kubernetes API 正在初始化的訊息,請等待作業完成。

  2. 依序點選「建立叢集」>「切換為 Standard 叢集」,並確認「切換為 Standard 叢集」

  3. 「位置類型」請點選「區域」,然後選取可用區 。其他變數都保留預設,然後點選「建立」。Kubernetes Engine 叢集會在幾分鐘內建立完畢。叢集準備就緒時,畫面上會顯示綠色勾號。

  4. 點選叢集右側的三點圖示,然後按一下「連結」

  5. 在「連線至叢集」畫面中,按一下「在 Cloud Shell 中執行」,即可自動在 Cloud Shell 中輸入連線指令。

  6. 按下 Enter 鍵來連線至叢集。

  7. 輸入下列指令來測試連線:

kubectl get nodes

這個指令只會顯示叢集中的機器。如果指令順利執行,表示連線成功。

  1. 在 Cloud Shell 點選「開啟編輯器」「Cloud Shell 編輯器」圖示
  2. 在左側的導覽窗格展開「gcp-course/deploying-apps-to-gcp」資料夾,接著點選「main.py」開啟檔案。
  3. main() 函式中,將標題變更為 Hello Kubernetes Engine,如下所示:
@app.route("/") def main(): model = {"title" "Hello Kubernetes Engine"} return render_template('index.html', model=model)
  1. 點選「儲存」來儲存變更。
  2. 在「gcp-course/deploying-apps-to-gcp」資料夾中新增檔案並命名為 kubernetes-config.yaml
  3. 將下列程式碼貼入檔案,設定應用程式:
--- apiVersion: apps/v1 kind: Deployment metadata: name: devops-deployment labels: app: devops tier: frontend spec: replicas: 3 selector: matchLabels: app: devops tier: frontend template: metadata: labels: app: devops tier: frontend spec: containers: - name: devops-demo image: <YOUR IMAGE PATH HERE> ports: - containerPort: 8080 --- apiVersion: v1 kind: Service metadata: name: devops-deployment-lb labels: app: devops tier: frontend-lb spec: type: LoadBalancer ports: - port: 80 targetPort: 8080 selector: app: devops tier: frontend

注意:在上方 YAML 檔案的第一個部分中,設定的是 Deployment。在這個例子中,您將部署 3 個 Python 網頁應用程式的執行個體。請留意映像檔屬性,您必須在映像檔建立完成後的一分鐘內更新這個值。在第二個部分中,您要建立類型為「負載平衡器」的服務。負載平衡器將具備公開 IP 位址,使用者會透過負載平衡器存取您的應用程式。

如要進一步瞭解 Kubernetes Deployment 和 Service,請參閱下列連結:

  1. 在「Cloud Shell」輸入下列指令,建立名為 devops-demo 的 Artifact Registry 存放區:
gcloud artifacts repositories create devops-demo \ --repository-format=docker \ --location={{{ project_0.default_region | "REGION" }}}
  1. 輸入下列指令,將 Docker 設為向 Artifact Registry Docker 存放區進行驗證:
gcloud auth configure-docker {{{ project_0.default_region | "REGION" }}}-docker.pkg.dev
  1. 如要使用 Kubernetes Engine,就必須建構 Docker 映像檔。請輸入下列指令,透過 Cloud Build 建立映像檔,並儲存至 Artifact Registry:
cd ~/gcp-course/deploying-apps-to-gcp gcloud builds submit --tag {{{ project_0.default_region | "REGION" }}}-docker.pkg.dev/$DEVSHELL_PROJECT_ID/devops-demo/devops-image:v0.2 .
  1. 上方指令執行完成後,映像檔名稱就會顯示在輸出內容中。映像檔名稱格式為:-docker.pkg.dev/PROJECT_ID/devops-demo/devops-image:v0.2。

  2. 選取映像檔名稱並複製到剪貼簿,然後將該值貼入 kubernetes-config.yaml 檔案,覆寫原有的 <YOUR IMAGE PATH HERE> 字串,

內容大致如下所示:

spec: containers: - name: devops-demo image: {{{ project_0.default_region | "REGION" }}}-docker.pkg.dev/PROJECT_ID/devops-demo/devops-image:v0.2 ports:
  1. 輸入下列 Kubernetes 指令,部署應用程式:
kubectl apply -f kubernetes-config.yaml
  1. 在設定檔中,您為應用程式指定了三個備用資源。輸入下列指令,確認三個執行個體是否已建立完成:
kubectl get pods

確認所有 Pod 均已準備就緒。如未準備就緒,請稍候片刻,然後再試一次。

  1. 負載平衡器也已新增至設定檔中。請輸入下列指令,確認負載平衡器是否已建立完成:
kubectl get services

輸出內容大致如下所示:

輸出內容

如果負載平衡器的外部 IP 位址顯示「pending」,請稍候片刻再重試。

  1. 取得外部 IP 後,請開啟瀏覽器分頁,並對該 IP 發送要求。系統應會傳回 Hello Kubernetes Engine。這項作業可能需要幾秒才能執行完成。

點選「Check my progress」,確認目標已達成。部署至 Kubernetes Engine

工作 5:部署至 Cloud Run

Cloud Run 可簡化及自動化部署至 Kubernetes 的作業。使用 Cloud Run 時不須準備設定檔,只要為應用程式選擇叢集即可。透過 Cloud Run,您可以使用由 Google 代管的叢集或自己的 Kubernetes 叢集。

如要使用 Cloud Run,您必須透過 Docker 映像檔部署應用程式,且應用程式須為無狀態。

  1. 開啟 Cloud Shell 程式碼編輯器,然後展開左側導覽窗格中的「gcp-course/deploying-apps-to-gcp」資料夾,接著點選「main.py」開啟檔案。
  2. main() 函式中,將標題變更為 Hello Cloud Run,如下所示:
@app.route("/") def main(): model = {"title" "Hello Cloud Run"} return render_template('index.html', model=model)
  1. 點選「儲存」來儲存變更。

  2. 如要使用 Cloud Run,就必須建構 Docker 映像檔。在 Cloud Shell 輸入下列指令,透過 Cloud Build 建立映像檔,並儲存至 Artifact Registry:

cd ~/gcp-course/deploying-apps-to-gcp gcloud builds submit --tag {{{ project_0.default_region | "REGION" }}}-docker.pkg.dev/$DEVSHELL_PROJECT_ID/devops-demo/cloud-run-image:v0.1 .
  1. 建構作業完成後,請前往 Google Cloud 控制台,在標題列的「搜尋」欄位輸入 Cloud Run,然後點選「產品和頁面」部分中的「Cloud Run」

  2. 點選「Create service」(建立服務)。 這麼做會啟用 Cloud Run API。

  3. 在「容器映像檔網址」文字方塊中點選「選取」連結,然後按一下「Artifact Registry」。在結果對話方塊中,依序展開「Region-docker.pkg.dev/$DEVSHELL_PROJECT_ID/devops-demo」>「cloud-run-image」,並選取列出的映像檔,然後點選「選取」

  4. 在「服務名稱」中輸入 hello-cloud-run,並選取 區域。

  5. 「驗證」請選取「允許未經驗證的叫用」

  6. 在「容器、磁碟區、網路與安全性」中,選取「執行環境」部分中的「預設」

  7. 在「修訂版本資源調度」中,將「執行個體數量上限」設為 6,其他設定則維持預設值。

  8. 最後點選「建立」

  9. 服務應該很快就能部署完成。畫面上顯示綠色勾號時,按一下自動產生的應用程式網址,系統應會傳回 Hello Cloud Run

點選「Check my progress」,確認目標已達成。部署至 Cloud Run

恭喜!

在本研究室中,您已成功將應用程式部署至 App Engine、Kubernetes Engine 和 Cloud Run 等 Google Cloud 服務。

關閉研究室

如果您已完成研究室,請按一下「End Lab」(關閉研究室)。Google Cloud Skills Boost 會移除您使用的資源,並清除所用帳戶。

您可以針對研究室的使用體驗評分。請選取合適的星級評等並提供意見,然後按一下「Submit」(提交)

星級評等代表您的滿意程度:

  • 1 星 = 非常不滿意
  • 2 星 = 不滿意
  • 3 星 = 普通
  • 4 星 = 滿意
  • 5 星 = 非常滿意

如果不想提供意見回饋,您可以直接關閉對話方塊。

如有任何想法、建議或指教,請透過「Support」(支援) 分頁提交。

Copyright 2025 Google LLC 保留所有權利。Google 和 Google 標誌是 Google LLC 的商標,其他公司和產品名稱則有可能是其關聯公司的商標。

准备工作

  1. 实验会创建一个 Google Cloud 项目和一些资源,供您使用限定的一段时间
  2. 实验有时间限制,并且没有暂停功能。如果您中途结束实验,则必须重新开始。
  3. 在屏幕左上角,点击开始实验即可开始

使用无痕浏览模式

  1. 复制系统为实验提供的用户名密码
  2. 在无痕浏览模式下,点击打开控制台

登录控制台

  1. 使用您的实验凭证登录。使用其他凭证可能会导致错误或产生费用。
  2. 接受条款,并跳过恢复资源页面
  3. 除非您已完成此实验或想要重新开始,否则请勿点击结束实验,因为点击后系统会清除您的工作并移除该项目

此内容目前不可用

一旦可用,我们会通过电子邮件告知您

太好了!

一旦可用,我们会通过电子邮件告知您

一次一个实验

确认结束所有现有实验并开始此实验

使用无痕浏览模式运行实验

请使用无痕模式或无痕式浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。