正在加载…
未找到任何结果。

在 Google Cloud 控制台中运用您的技能

Deploy and Monitor in Google Cloud for AWS Professionals

访问 700 多个实验和课程

Hello Cloud Run [APPRUN] (AWS)

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

您最近加入一間 IT 公司,擔任雲端環境開發人員,這間公司的主要雲端服務供應商 (CSP) 是 Google Cloud。您收到指示,要在雲端環境建構無伺服器的無狀態網頁應用程式,因此須採用 Google Cloud 提供的 Cloud Run 服務。需要考量的一些面向包括:

  • 啟用 Cloud Run API
  • 儲存容器映像檔
  • 部署無伺服器的容器化應用程式
  • 降低成本的最佳做法

您在前一間公司使用過 AWS,知道 AWS Fargate 不需要伺服器即可佈建容器化環境。AWS Fargate 可處理發布、監控容器及調度資源的工作。開發人員因此能將心力集中在應用程式的程式碼上,輕鬆部署、管理容器化應用程式,並為應用程式調度資源。另外,AWS Fargate 可讓您為 Amazon Elastic Container Service (Amazon ECS) 或 Amazon Elastic Kubernetes Service (Amazon EKS) 部署容器。也就是說,開發人員能夠選取最符合需求的自動化調度管理選項。

下圖顯示以 AWS Fargate 為基礎的無伺服器容器化應用程式結構:

接著,您會學習如何在 Google Cloud 部署應用程式。

總覽

Cloud Run 是代管運算平台,能夠讓您執行可透過 HTTP 要求叫用的無狀態容器。Cloud Run 採用無伺服器技術,可為您省去所有基礎架構管理工作,讓您專心處理最重要的事:建構出色的應用程式。

Cloud Run 是以 Knative 打造而成,可讓您透過 Cloud Run 以全代管的方式執行容器,或是透過 Cloud Run on GKE 在您的 Google Kubernetes Engine 叢集中執行容器。

透過這個實驗室,您可以瞭解如何建立簡易容器化應用程式映像檔,並部署至 Cloud Run。

目標

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

  • 啟用 Cloud Run API。
  • 建構簡易型 Node.js 應用程式,這個應用程式可部署為無伺服器的無狀態容器。
  • 將應用程式容器化,並上傳至 Container Registry (現已改稱「Artifact Registry」)。
  • 在 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. 按一下「Start Lab」按鈕。如果研究室會產生費用,畫面中會出現選擇付款方式的彈出式視窗。左側面板會顯示必須在這個研究室中使用的暫時憑證。

  2. 複製使用者名稱,然後點選「Open Google Console」。接著,研究室會啟動相關資源並開啟另一個分頁,當中顯示「Choose an account」頁面。

    注意事項:請在不同視窗並排開啟分頁。
  3. 點選「Choose an account」頁面中的「使用其他帳戶」,「Sign in」頁面隨即開啟。

  4. 貼上您在「連線詳細資訊」面板中複製的使用者名稱,然後複製並貼上密碼。

注意事項:請務必使用「連線詳細資訊」面板中的憑證,而非 Google Cloud Skills Boost 的憑證。另外,請勿在這個研究室中使用您自己的 Google Cloud 帳戶,以免產生費用。
  1. 按過後續的所有頁面:
  • 接受條款及細則。
  • 由於這是臨時帳戶,請勿新增救援選項或雙重驗證機制。
  • 請勿申請免費試用。

Cloud 控制台稍後會在這個分頁中開啟。

注意事項:點選畫面左上方的導覽選單,即可查看 Google Cloud 產品與服務清單。

啟動 Google Cloud Shell

Google Cloud Shell 是搭載多項開發工具的虛擬機器,提供永久的 5 GB 主目錄,而且在 Google Cloud 中運作。

Google Cloud Shell 提供指令列存取權,方便您使用 Google Cloud 資源。

  1. 在 Cloud 控制台的右上方找到工具列,然後按一下「開啟 Cloud Shell」按鈕。

  2. 按一下「繼續」

佈建並連線至環境的作業需要一些時間才能完成。連線建立完成即代表已通過驗證,而且專案已設為您的「PROJECT_ID」。示例如下:

gcloud 是 Google Cloud 的指令列工具,已預先安裝於 Cloud Shell,並支援 Tab 鍵完成功能。

  • 您可以使用下列指令來列出使用中的帳戶:
gcloud auth list

輸出內容:

Credentialed accounts: - @.com (active)

輸出內容示例:

Credentialed accounts: - google1623327_student@qwiklabs.net
  • 您可以使用下列指令來列出專案 ID:
gcloud config list project

輸出內容:

[core] project =

輸出內容示例:

[core] project = qwiklabs-gcp-44776a13dea667a6 注意事項:如需 gcloud 的完整說明,請參閱 gcloud CLI 總覽指南

參考資料

基本 Linux 指令

下方的參考清單列出了幾個非常基本的 Linux 指令,這個研究室的操作說明或程式碼區塊可能會提及這些指令。

指令 --> 動作 . 指令 --> 動作
mkdir (建立目錄) 建立新的資料夾 . cd (變更目錄) 將位置變更為其他資料夾
ls (列出) 列出目錄中的檔案和資料夾 . cat (串連) 在不使用編輯器的情況下讀取檔案內容
apt-get update 更新套件管理工具程式庫 . ping 向主機傳送信號來測試可連性
mv (移動) 移動檔案 . cp (複製) 建立檔案副本
pwd (顯示工作目錄) 傳回目前的位置 . sudo (超級使用者權限) 授予更高層級的管理員權限

工作 1:啟用 Cloud Run API 並設定 Cloud Shell 環境

  1. 在 Cloud Shell 中啟用 Cloud Run API
gcloud services enable run.googleapis.com
  1. 如果系統提示您授權使用憑證,請按照指示操作。接著,畫面中應該會顯示成功訊息,內容與以下類似:
Operation "operations/acf.cc11852d-40af-47ad-9d59-477a12847c9e" finished successfully. 注意:您也可以前往控制台的「API 和服務」專區啟用該 API。
  1. 設定運算區域:
gcloud config set compute/region {{{ project_0.default_region| "Region" }}}
  1. 建立 LOCATION 環境變數:
LOCATION="{{{ project_0.default_region| "Region" }}}"

工作 2:編寫範例應用程式

在這項工作中,您將建構一個以 Express 為基礎的簡易型 Node.js 應用程式,用於回應 HTTP 要求。

  1. 在 Cloud Shell 中建立名為 helloworld 的新目錄,然後查看當中內容:
mkdir helloworld && cd helloworld
  1. 接下來要建立及編輯檔案。您可以使用 viemacnano 來編輯檔案,也能在 Cloud Shell 點選「開啟編輯器」按鈕,運用 Cloud Shell 程式碼編輯器來編輯檔案。

  2. 建立 package.json 檔案,並在當中新增下列內容:

nano package.json { "name": "helloworld", "description": "Simple hello world sample in Node", "version": "1.0.0", "main": "index.js", "scripts": { "start": "node index.js" }, "author": "Google LLC", "license": "Apache-2.0", "dependencies": { "express": "^4.17.1" } }

最重要的是,上述檔案包含 start 指令碼,以及 Express 網頁應用程式框架的依附元件。

  1. 依序按下 Ctrl+X 鍵和 Y 鍵,儲存 package.json 檔案。

  2. 接著,在同一個目錄中建立 index.js 檔案,並將下列幾行內容複製到檔案中:

nano index.js const express = require('express'); const app = express(); const port = process.env.PORT || 8080; app.get('/', (req, res) => { const name = process.env.NAME || 'World'; res.send(`Hello ${name}!`); }); app.listen(port, () => { console.log(`helloworld: listening on port ${port}`); });

這段程式碼會建立基本的網路伺服器,藉此監聽 PORT 環境變數定義的通訊埠。應用程式現已就緒,您可以開始將應用程式容器化,並上傳至 Container Registry。

  1. 依序按下 Ctrl+X 鍵和 Y 鍵,儲存 index.js 檔案。
注意:您可以透過多種語言開始使用 Cloud Run。如需 Go、Python、Java、PHP、Ruby、Cloud Shell 指令碼和其他語言的操作說明,請參閱快速入門指南

工作 3:將應用程式容器化並上傳至 Artifact Registry

  1. 為了將範例應用程式容器化,請在來源檔案所在的目錄中建立名為 Dockerfile 的新檔案,並加入下列內容:
nano Dockerfile # Use the official lightweight Node.js 12 image. # https://hub.docker.com/_/node FROM node:12-slim # Create and change to the app directory. WORKDIR /usr/src/app # Copy application dependency manifests to the container image. # A wildcard is used to ensure copying both package.json AND package-lock.json (when available). # Copying this first prevents re-running npm install on every code change. COPY package*.json ./ # Install production dependencies. # If you add a package-lock.json, speed your build by switching to 'npm ci'. # RUN npm ci --only=production RUN npm install --only=production # Copy local code to the container image. COPY . ./ # Run the web service on container startup. CMD [ "npm", "start" ]
  1. 依序按下 Ctrl+X 鍵和 Y 鍵,儲存 Dockerfile 檔案。

  2. 接著,從內含 Dockerfile 的目錄執行下列指令,運用 Cloud Build 建立容器映像檔。(請留意指令中的 $GOOGLE_CLOUD_PROJECT 環境變數,內含這個實驗室的專案 ID):

gcloud builds submit --tag gcr.io/$GOOGLE_CLOUD_PROJECT/helloworld

Cloud Build 是在 Google Cloud Platform 執行建構作業的服務。只需一個指令,這項服務就會在 Docker 容器中執行一系列的建構步驟、產生應用程式容器 (或其他構件),並推送至 Artifact Registry。

容器推送到 Artifact Registry 後,您會看到包含映像檔名稱 (gcr.io/[PROJECT-ID]/helloworld) 的「SUCCESS」(成功) 訊息。映像檔會儲存於 Artifact Registry,日後可以視需求重複使用。

  1. 執行下列指令,列出與目前專案相關聯的所有容器映像檔:
gcloud container images list
  1. 執行下列標準 docker 指令,透過 Cloud Shell 在本機執行及測試應用程式:
docker run -d -p 8080:8080 gcr.io/$GOOGLE_CLOUD_PROJECT/helloworld
  1. 點選 Cloud Shell 視窗中的「網頁預覽」,然後選取「透過以下通訊埠預覽:8080」

此動作應會開啟瀏覽器視窗,並在其中顯示「Hello World!」的訊息。您也能直接執行 curl localhost:8080 指令。

注意:如果 docker 指令無法提取遠端的容器映像檔,請執行下列指令:gcloud auth configure-docker

工作 4:部署至 Cloud Run

  1. 為了將容器化應用程式部署至 Cloud Run,請執行在下列指令中加入專案 ID,並執行指令:
gcloud run deploy --image gcr.io/$GOOGLE_CLOUD_PROJECT/helloworld --allow-unauthenticated --region=$LOCATION

上述指令中的 allow-unauthenticated 旗標會將您的服務設為可公開存取。

  1. 系統提示您確認 service name 時,請按下 Enter 鍵。

稍候片刻,等待部署作業完成。

部署成功之後,指令列會顯示服務網址:

Service [helloworld] revision [helloworld-00001-xit] has been deployed and is serving 100 percent of traffic. Service URL: https://helloworld-h6cp412q3a-uc.a.run.app

您現在可以在任何瀏覽器視窗開啟服務網址,查看已部署的容器。

恭喜!您已將一個封裝在容器映像檔中的應用程式部署到 Cloud Run。Cloud Run 會自動水平擴充您的容器映像檔,以處理收到的要求,然後在需求減少時縮減規模。在您自己的環境中,您只需為處理要求期間使用的 CPU、記憶體和網路支付費用。

在本實驗室中,您是使用 gcloud 指令列執行各項操作。您也可以透過 Cloud 控制台使用 Cloud Run。

  • 導覽選單中點選「無伺服器」部分的「Cloud Run」,畫面中應該會列出您的 helloworld 服務:

工作 5:清除所用資源

不使用服務時,Cloud Run 不會收費,但您可能仍須針對已建構的容器映像檔,支付儲存費用。

  1. 如要避免產生費用,您可以刪除 GCP 專案,讓專案中使用的所有資源不再產生費用;您也可以執行下列指令,直接刪除 helloworld 映像檔:
gcloud container images delete gcr.io/$GOOGLE_CLOUD_PROJECT/helloworld
  1. 系統提示您繼續操作時,請輸入 Y 並按下 Enter 鍵。

  2. 執行下列指令,刪除 Cloud Run 中的服務:

gcloud run services delete helloworld --region={{{ project_0.default_region| "Region" }}}
  1. 系統提示您繼續操作時,請輸入 Y 並按下 Enter 鍵。

恭喜!

您已完成這個實驗室中的所有工作!

Google Cloud Run 和 AWS Fargate 都是無伺服器運算服務,可讓開發人員執行容器化應用程式,不僅具備成本效益,也能輕鬆擴充。不過,這兩項服務有些許不同。

以下說明關鍵的異同之處。

相似處:

  • Google Cloud Run 和 AWS Fargate 都是無伺服器運算服務,這代表開發人員可以專心編寫程式碼,不必為底層基礎架構而煩惱。
  • 都採用容器化技術來封裝及部署應用程式。
  • 都支援 Docker 容器部署格式。
  • 都能依據需求自動擴充或縮減資源。

差異:

  • AWS Fargate 使用者必須自行設定及管理容器自動化調度管理工具,例如 Kubernetes。若使用 Google Cloud Run,則是交由平台處理。
  • Google Cloud Run 是獨立服務,AWS Fargate 則是 Amazon ECS 或 Amazon EKS 兩項容器服務的佈建服務。
  • 如要部署無伺服器容器化環境,在 AWS,您需要同時整合 AWS Fargate 與 Amazon ECS 或 Amazon EKS 等自動化調度管理服務,在 Google Cloud 則只需要使用 Cloud Run。

關閉研究室

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

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

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

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

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

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

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

上一步 下一步

准备工作

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

此内容目前不可用

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

太好了!

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

一次一个实验

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

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

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