GSP002

總覽
在 Cloud Shell 中,您可以透過指令列存取託管於 Google Cloud 的運算資源。Cloud Shell 是一種以 Debian 為基礎的虛擬機器,主目錄配備 5 GB 的永久磁碟儲存空間,方便您管理 Google Cloud 專案和資源。這個虛擬機器已預先安裝 gcloud
指令列工具和其他公用程式,可讓您快速開始執行作業。
在這個實作研究室中,您將學習下列內容:在 Cloud Shell 中,透過 gcloud
工具連線至託管於 Google Cloud 的運算資源。
我們建議您自行輸入指令,這麼做有助於強化核心概念。許多研究室都附有程式碼區塊,當中列出必要的指令。您可以複製這些指令,並貼到合適的地方。
學習內容
- 練習使用
gcloud
指令。
- 連線至託管於 Google Cloud 的運算資源。
事前準備
- 瞭解如何使用標準的 Linux 文字編輯器 (例如
vim
、emacs
或 nano
)。
設定和需求
點選「Start Lab」按鈕前的須知事項
請詳閱以下操作說明。研究室活動會計時,而且中途無法暫停。點選「Start Lab」 後就會開始計時,讓您瞭解有多少時間可以使用 Google Cloud 資源。
您將在真正的雲端環境中完成實作研究室活動,而不是在模擬或示範環境。為達此目的,我們會提供新的暫時憑證,讓您用來在研究室活動期間登入及存取 Google Cloud。
如要完成這個研究室活動,請先確認:
- 您可以使用標準的網際網路瀏覽器 (Chrome 瀏覽器為佳)。
注意:請使用無痕模式或私密瀏覽視窗執行此研究室。這可以防止個人帳戶和學生帳戶之間的衝突,避免個人帳戶產生額外費用。
- 是時候完成研究室活動了!別忘了,活動一開始將無法暫停。
注意:如果您擁有個人 Google Cloud 帳戶或專案,請勿用於本研究室,以免產生額外費用。
如何開始研究室及登入 Google Cloud 控制台
-
按一下「Start Lab」(開始研究室) 按鈕。如果研究室會產生費用,畫面中會出現選擇付款方式的彈出式視窗。左側的「Lab Details」窗格會顯示下列項目:
- 「Open Google Cloud console」按鈕
- 剩餘時間
- 必須在這個研究室中使用的暫時憑證
- 完成這個實驗室所需的其他資訊 (如有)
-
點選「Open Google Cloud console」;如果使用 Chrome 瀏覽器,也能按一下滑鼠右鍵,然後選取「在無痕式視窗中開啟連結」。
接著,實驗室會啟動相關資源並開啟另一個分頁,當中顯示「登入」頁面。
提示:您可以在不同的視窗中並排開啟分頁。
注意:如果頁面中顯示「選擇帳戶」對話方塊,請點選「使用其他帳戶」。
-
如有必要,請將下方的 Username 貼到「登入」對話方塊。
{{{user_0.username | "Username"}}}
您也可以在「Lab Details」窗格找到 Username。
-
點選「下一步」。
-
複製下方的 Password,並貼到「歡迎使用」對話方塊。
{{{user_0.password | "Password"}}}
您也可以在「Lab Details」窗格找到 Password。
-
點選「下一步」。
重要事項:請務必使用實驗室提供的憑證,而非自己的 Google Cloud 帳戶憑證。
注意:如果使用自己的 Google Cloud 帳戶來進行這個實驗室,可能會產生額外費用。
-
按過後續的所有頁面:
- 接受條款及細則。
- 由於這是臨時帳戶,請勿新增救援選項或雙重驗證機制。
- 請勿申請免費試用。
Google Cloud 控制台稍後會在這個分頁開啟。
注意:如要查看列出 Google Cloud 產品和服務的選單,請點選左上角的「導覽選單」。
啟動 Cloud Shell
Cloud Shell 是搭載多項開發工具的虛擬機器,提供永久的 5 GB 主目錄,而且在 Google Cloud 中運作。Cloud Shell 提供指令列存取權,方便您使用 Google Cloud 資源。
- 點按 Google Cloud 控制台上方的「啟用 Cloud Shell」圖示
。
連線完成即代表已通過驗證,且專案已設為您的 PROJECT_ID。輸出內容中有一行宣告本工作階段 PROJECT_ID 的文字:
您在本工作階段中的 Cloud Platform 專案會設為「YOUR_PROJECT_ID」
gcloud
是 Google Cloud 的指令列工具,已預先安裝於 Cloud Shell,並支援 Tab 鍵自動完成功能。
- (選用) 您可以執行下列指令來列出使用中的帳戶:
gcloud auth list
-
點按「授權」。
-
輸出畫面應如下所示:
輸出內容:
ACTIVE: *
ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- (選用) 您可以使用下列指令來列出專案 ID:
gcloud config list project
輸出內容:
[core]
project = <project_ID>
輸出內容範例:
[core]
project = qwiklabs-gcp-44776a13dea667a6
附註:如需有關 gcloud
的完整說明,請前往 Google Cloud 並參閱「gcloud CLI overview guide」(gcloud CLI 總覽指南)。
啟用 Cloud Shell 後,您可以透過指令列叫用 Cloud SDK gcloud
工具,或叫用虛擬機器執行個體提供的其他工具。在這個研究室的後續步驟中,您將使用 $HOME
目錄。這個目錄配備永久磁碟儲存空間,可儲存各專案和 Cloud Shell 工作階段的檔案。只有您能使用自己的 $HOME
目錄,其他使用者均無法存取。
工作 1:設定環境
在本節中,您將瞭解開發環境中可調整的項目。
瞭解區域和可用區
有些 Google Compute Engine 資源位於區域,有些位於可用區。「區域」是您可以執行資源的特定地理位置,每個區域則會有一或多個「可用區」。舉例來說,us-central1
區域是指美國中部,其中有 us-central1-a
、us-central1-b
、us-central1-c
和 us-central1-f
等多個可用區。下表列出各個可用區和所屬區域:
美國西部 |
美國中部 |
美國東部 |
西歐 |
東亞 |
us-west1-a |
us-central1-a |
us-east1-b |
europe-west1-b |
asia-east1-a |
us-west1-b |
us-central1-b |
us-east1-c |
europe-west1c |
asia-east1-b |
- |
us-central1-c |
us-east1-d |
europe-west1-d |
aisia-east1-c |
- |
us-central1-f |
- |
- |
- |
可用區中的資源稱為「可用區資源」,像是虛擬機器執行個體和永久磁碟,這類資源都位於可用區。如果您想將永久磁碟連接至虛擬機器執行個體,這兩項資源須位於相同的可用區。同樣地,如果您要將靜態 IP 位址指派給執行個體,這兩項資源的所在區域也須相同。
注意:如要進一步瞭解區域、可用區並查看完整清單,請參閱 Google Cloud Compute Engine 的區域和可用區說明文件。
-
將區域設為 :
gcloud config set compute/region {{{project_0.default_region | REGION}}}
-
如要查看專案的區域設定,請執行下列指令:
gcloud config get-value compute/region
-
將可用區設為 :
gcloud config set compute/zone {{{project_0.default_zone | ZONE}}}
-
如要查看專案的可用區設定,請執行下列指令:
gcloud config get-value compute/zone
找出專案資訊
-
將專案 ID 複製到剪貼簿或文字編輯器。您可以在下列兩個地方查看專案 ID:
- 在 Cloud 控制台中,依序點選「導覽選單」圖示
>「Cloud 總覽」>「資訊主頁」,專案 ID 就在「專案資訊」的下方。
- 在研究室分頁中,使用者名稱和密碼的附近。
-
您也可以在 Cloud Shell 執行下列 gcloud
指令,查看專案 ID:
gcloud config get-value project
-
在 Cloud Shell 中執行下列 gcloud
指令,即可查看專案的詳細資料。
gcloud compute project-info describe --project $(gcloud config get-value project)
在輸出內容中,找出可用區和區域的中繼資料值。在這個研究室的後續步驟中,您會用到輸出內容中的可用區資訊 (google-compute-default-zone
)。
注意:如果輸出內容中沒有 google-compute-default-region
和 google-compute-default-zone
鍵/值,代表您未設定預設可用區或區域。輸出內容會列出其他與專案相關的資訊,相當實用,您不妨花一些時間詳加探索。
設定環境變數
環境變數會定義您的環境,如果您編寫內含 API 或執行檔的指令碼,即可節省後續的作業時間。
-
建立用於儲存專案 ID 的環境變數:
export PROJECT_ID=$(gcloud config get-value project)
-
建立用於儲存可用區的環境變數:
export ZONE=$(gcloud config get-value compute/zone)
-
如要確認變數是否設定正確,請執行下列指令:
echo -e "PROJECT ID: $PROJECT_ID\nZONE: $ZONE"
如果變數設定正確,echo 指令就會輸出專案 ID 和可用區。
透過 gcloud 工具建立虛擬機器
gcloud
工具可用來建立新的虛擬機器 (VM) 執行個體。
-
如要建立 VM,請執行下列指令:
gcloud compute instances create gcelab2 --machine-type e2-medium --zone $ZONE
輸出內容:
Created [https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-04-326fae68bc3d/zones/us-east1-c/instances/gcelab2].
NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS
gcelab2 {{{project_0.default_zone | ZONE}}} e2-medium 10.128.0.2 34.67.152.90 RUNNING
指令內容
-
gcloud compute
可用來管理 Compute Engine 資源,格式比 Compute Engine API 簡單。
-
instances create
會建立新的執行個體。
-
gcelab2
代表 VM 的名稱。
-
--machine-type
旗標會指定「e2-medium」機型。
-
--zone
旗標會指定要在哪個可用區建立 VM。
- 如果您省略
--zone
旗標,gcloud
工具會根據預設屬性推斷適用的可用區。在 create
指令中,如果您未另外指定值,其他必要的執行個體設定 (例如 machine type
和 image
) 都會設為預設值。
測試已完成的工作
點選「Check my progress」,確認工作已完成。如果成功透過 gcloud
工具建立虛擬機器,您就會看見評估分數。
透過 gcloud 建立虛擬機器
- 如要查看
create
指令的說明,請輸入下列指令:
gcloud compute instances create --help
注意:按「Enter」鍵或空白鍵,即可捲動查看說明。如要退出,請輸入 Q。
探索 gcloud 指令
gcloud
工具提供簡單的使用指南,您只要在任何 gcloud
指令末端加上 -h
旗標,即可查看說明。
-
執行下列指令:
gcloud -h
您可以在指令末端加上 --help
旗標或執行 gcloud help
指令,查看更詳細的說明。
-
執行下列指令:
gcloud config --help
如要退出,請輸入 Q
,然後按「Enter」鍵。
-
執行下列指令:
gcloud help config
gcloud config --help
和 gcloud help config
指令的效果相同,兩者都會傳回更完整的說明。
gcloud
包含通用旗標,可管理指令在每次叫用時的行為。旗標會覆寫 SDK 屬性中的值。
-
查看環境的設定清單:
gcloud config list
-
查看所有屬性和屬性設定:
gcloud config list --all
-
列出元件:
gcloud components list
此指令會列出這個研究室中可用的 gcloud
元件。
工作 2:篩選指令列輸出內容
gcloud
指令列介面 (CLI) 是功能強大的工具,可在您使用指令列時派上用場,例如查看特定資訊。
-
列出專案中可用的運算執行個體:
gcloud compute instances list
注意:一般來說,專案中會部署多項資源,不過 gcloud
會直接呈現輸出內容,方便您辨別特定資源。
輸出內容範例:
NAME: gcelab2
ZONE: {{{project_0.default_zone | ZONE}}}
MACHINE_TYPE: e2-medium
PREEMPTIBLE:
INTERNAL_IP: 10.142.0.2
EXTERNAL_IP: 35.237.43.111
STATUS: RUNNING
-
列出 gcelab2 虛擬機器:
gcloud compute instances list --filter="name=('gcelab2')"
輸出內容範例:
NAME: gcelab2
ZONE: {{{project_0.default_zone | ZONE}}}
MACHINE_TYPE: e2-medium
PREEMPTIBLE:
INTERNAL_IP: 10.142.0.2
EXTERNAL_IP: 35.237.43.111
STATUS: RUNNING
在上述指令中,您要求 gcloud
僅顯示符合下列條件的資訊:名稱為 gcelab2 的虛擬個體。
-
列出專案中的防火牆規則:
gcloud compute firewall-rules list
輸出內容:
NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED
default-allow-icmp default INGRESS 65534 icmp False
default-allow-internal default INGRESS 65534 tcp:0-65535,udp:0-65535,icmp False
default-allow-rdp default INGRESS 65534 tcp:3389 False
default-allow-ssh default INGRESS 65534 tcp:22 False
dev-net-allow-ssh dev-network INGRESS 1000 tcp:22 False
serverless-to-vpc-connector dev-network INGRESS 1000 icmp,udp:665-666,tcp:667 False
vpc-connector-egress dev-network INGRESS 1000 icmp,udp,tcp False
vpc-connector-health-check dev-network INGRESS 1000 tcp:667 False
vpc-connector-to-serverless dev-network EGRESS 1000 icmp,udp:665-666,tcp:667 False
-
列出預設網路的防火牆規則:
gcloud compute firewall-rules list --filter="network='default'"
輸出內容:
NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED
default-allow-icmp default INGRESS 65534 icmp False
default-allow-internal default INGRESS 65534 tcp:0-65535,udp:0-65535,icmp False
default-allow-rdp default INGRESS 65534 tcp:3389 False
default-allow-ssh default INGRESS 65534 tcp:22 False
-
列出預設網路的防火牆規則,且允許規則與 ICMP 規則相符:
gcloud compute firewall-rules list --filter="NETWORK:'default' AND ALLOW:'icmp'"
輸出內容:
NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED
default-allow-icmp default INGRESS 65534 icmp False
default-allow-internal default INGRESS 65534 tcp:0-65535,udp:0-65535,icmp False
工作 3:連線至 VM 執行個體
gcloud compute
可用來連線至執行個體。gcloud compute ssh
指令提供 SSH 包裝函式,可處理驗證程序,並將執行個體名稱對應至 IP 位址。
-
如要透過 SSH 連線至 VM,請執行下列指令:
gcloud compute ssh gcelab2 --zone $ZONE
輸出內容:
WARNING: The public SSH key file for gcloud does not exist.
WARNING: The private SSH key file for gcloud does not exist.
WARNING: You do not have an SSH key for gcloud.
WARNING: [/usr/bin/ssh-keygen] will be executed to generate a key.
This tool needs to create the directory
[/home/gcpstaging306_student/.ssh] before being able to generate SSH Keys.
Do you want to continue? (Y/n)
-
如要繼續操作,請輸入 Y。
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase)
-
如要將通關密語留空,請按兩次「Enter」鍵。
注意:
您已順利連線至剛剛在實驗室建立的虛擬機器,有注意到命令提示字元的不同嗎?
現在,您會在提示中看到類似 sa_107021519685252337470@gcelab2 的字串。
-
@ 符號前的字元代表目前使用的帳戶。
-
@ 符號後的字元代表目前存取的主體機器。
-
在虛擬機器上安裝 nginx
網路伺服器:
sudo apt install -y nginx
-
在這個步驟中,您不必執行任何操作。請執行下列指令,中斷 SSH 連線並結束遠端殼層:
exit
您現在應會返回專案的命令提示字元。
工作 4:更新防火牆
使用虛擬機器等運算資源前,請務必瞭解相關的防火牆規則。
-
列出專案中的防火牆規則:
gcloud compute firewall-rules list
輸出內容:
NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED
default-allow-icmp default INGRESS 65534 icmp False
default-allow-internal default INGRESS 65534 tcp:0-65535,udp:0-65535,icmp False
default-allow-rdp default INGRESS 65534 tcp:3389 False
default-allow-ssh default INGRESS 65534 tcp:22 False
dev-net-allow-ssh dev-network INGRESS 1000 tcp:22 False
serverless-to-vpc-connector dev-network INGRESS 1000 icmp,udp:665-666,tcp:667 False
vpc-connector-egress dev-network INGRESS 1000 icmp,udp,tcp False
vpc-connector-health-check dev-network INGRESS 1000 tcp:667 False
vpc-connector-to-serverless dev-network EGRESS 1000 icmp,udp:665-666,tcp:667 False
從上方的輸出內容中,可以看出有兩個可用網路。
default
網路是 gcelab2
虛擬機器的所在位置。
-
嘗試存取 gcelab2
虛擬機器上執行的 nginx 服務。
注意:您並未設定合適的防火牆規則,與虛擬機器的通訊失敗。nginx 網路伺服器預期會透過 tcp:80 通訊。
為確保通訊順利,請完成下列操作:
- 為 gcelab2 虛擬機器新增標記
- 為 http 流量新增防火牆規則
-
為虛擬機器新增標記:
gcloud compute instances add-tags gcelab2 --tags http-server,https-server
-
更新要允許的防火牆規則:
gcloud compute firewall-rules create default-allow-http --direction=INGRESS --priority=1000 --network=default --action=ALLOW --rules=tcp:80 --source-ranges=0.0.0.0/0 --target-tags=http-server
-
列出專案中的防火牆規則:
gcloud compute firewall-rules list --filter=ALLOW:'80'
輸出內容:
NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED
default-allow-http default INGRESS 1000 tcp:80 False
-
確認是否能透過 http 與虛擬機器通訊:
curl http://$(gcloud compute instances list --filter=name:gcelab2 --format='value(EXTERNAL_IP)')
畫面中會顯示預設的 nginx
輸出內容。
工作 5:查看系統記錄檔
如要瞭解專案的運作方式,查看記錄檔相當重要。請使用 gcloud
存取 Google Cloud 中可查看的記錄檔。
-
查看系統中的記錄檔:
gcloud logging logs list
輸出內容:
NAME: projects/qwiklabs-gcp-01-4b75909db302/logs/GCEGuestAgent
NAME: projects/qwiklabs-gcp-01-4b75909db302/logs/OSConfigAgent
NAME: projects/qwiklabs-gcp-01-4b75909db302/logs/autoscaler.googleapis.com%2Fstatus_change
NAME: projects/qwiklabs-gcp-01-4b75909db302/logs/cloudaudit.googleapis.com%2Factivity
NAME: projects/qwiklabs-gcp-01-4b75909db302/logs/cloudaudit.googleapis.com%2Fdata_access
NAME: projects/qwiklabs-gcp-01-4b75909db302/logs/cloudaudit.googleapis.com%2Fsystem_event
NAME: projects/qwiklabs-gcp-01-4b75909db302/logs/compute.googleapis.com%2Fautoscaler
NAME: projects/qwiklabs-gcp-01-4b75909db302/logs/compute.googleapis.com%2Finstance_group_manager_events
NAME: projects/qwiklabs-gcp-01-4b75909db302/logs/compute.googleapis.com%2Fshielded_vm_integrity
NAME: projects/qwiklabs-gcp-01-4b75909db302/logs/run.googleapis.com%2Fstderr
NAME: projects/qwiklabs-gcp-01-4b75909db302/logs/run.googleapis.com%2Fstdout
-
查看與運算資源相關的記錄檔:
gcloud logging logs list --filter="compute"
輸出內容:
NAME: projects/qwiklabs-gcp-01-4b75909db302/logs/compute.googleapis.com%2Fautoscaler
NAME: projects/qwiklabs-gcp-01-4b75909db302/logs/compute.googleapis.com%2Finstance_group_manager_events
NAME: projects/qwiklabs-gcp-01-4b75909db302/logs/compute.googleapis.com%2Fshielded_vm_integrity
-
查看與 gce_instance
資源類型相關的記錄檔:
gcloud logging read "resource.type=gce_instance" --limit 5
-
查看特定虛擬機器的記錄檔:
gcloud logging read "resource.type=gce_instance AND labels.instance_name='gcelab2'" --limit 5
工作 6:實戰演練
您可以透過下列選擇題強化所學,確實掌握這個研究室的概念。
恭喜!
您學到如何啟動 Cloud Shell,並執行一些 gcloud
指令範例。
後續步驟/瞭解詳情
歡迎完成下列研究室,繼續學習之路:
Google Cloud 教育訓練與認證
協助您瞭解如何充分運用 Google Cloud 的技術。我們的課程會介紹專業技能和最佳做法,讓您可以快速掌握要領並持續進修。我們提供從基本到進階等級的訓練課程,並有隨選、線上和虛擬課程等選項,方便您抽空參加。認證可協助您驗證及證明自己在 Google Cloud 技術方面的技能和專業知識。
使用手冊上次更新日期:2023 年 9 月 9 日
實驗室上次測試日期:2023 年 9 月 9 日
Copyright 2025 Google LLC 保留所有權利。Google 和 Google 標誌是 Google LLC 的商標,其他公司和產品名稱則有可能是其關聯公司的商標。