如何使用 Cloud Shell 和 gcloud 指令 | Qwiklabs GSP002



簡介

在本文實作練習中,將會透過 開始使用 Cloud Shell 和 gcloud | Google Cloud Skills Boost 主題,學習如何在 Cloud Shell 環境中,透過 gcloud 指令工具連線至託管於 Google Cloud 的運算資源。






啟用 Cloud Shell (gcloud)

本次實作時間給予 1 小時 10 分,算是非常充裕。同樣的,啟動實作環境後,系統提供暫用的使用者帳號、密碼、Project ID…等資訊。


在 Cloud Console 畫面中,點選右上角圖示後,準備啟用 Cloud Shell (gcloud),稍後也會使用到。簡單來說,Cloud Shell 是個已經載入了開發工具的極小型 VM 虛擬主機,並且提供 5 GB 儲存空間,以便管理人員可以透過 Cloud Shell 對 Google Cloud 資源進行存取等管理動作。

順利啟用 Cloud Shell 之後,可以嘗試執行「gcloud auth list」、「gcloud config list project」指令,了解目前運作環境的相關系統資訊。詳細資訊請參考 gcloud CLI overview  |  Google Cloud CLI Documentation 官方文件。






設定採用的 Region 和 Zone

在開始實作之前,應該先了解有哪一些 Google Compute Engine 資源,可供使用。簡單來說,「區域」(Region) 是執行資源的特定地理位置,每個區域當中則會有一或多個「可用區」(Zone)。舉例來說,「us-central1」表示美國中部區域,在這個區域中有「us-central1-a、us-central1-b、us-central1-c 和 us-central1-f」 多個可用區。有關 Region 和 Zone 的詳細資訊,請參考 Regions and zones  |  Compute Engine Documentation  |  Google Cloud 官方文件。下表列出各個可用區和所屬區域:


透過下列指令,可以組態設定 Region 為「us-central1」,並將 Zone 設定為「us-central1-b」,組態設定完成後,記得透過指令確認組態設定是否套用生效。


在 Google Console 操作畫面中,可以很輕鬆的查看 Project ID。當然,透過 gcloud 指令「gcloud config get-value project」也可以很方便進行查詢。倘若,要查看 Project ID 詳細資訊請執行「gcloud compute project-info describe --project $(gcloud config get-value project)」指令即可。


當然,在 CLI 指令操作介面中,需要更行雲流水的操作時,可以透過組態設定環境變數來達成。可以透過下列三個指令分別組態設定環境變數:
  • 建立儲存 Project  ID 的環境變數: export PROJECT_ID=$(gcloud config get-value project)
  • 建立儲存 Zone 的環境變數: export ZONE=$(gcloud config get-value compute/zone)
  • 確認環境變數是否套用生效: echo -e "PROJECT ID: $PROJECT_ID\nZONE: $ZONE"

透過 gcloud 指令建立 VM 虛擬主機,請執行「gcloud compute instances create gcelab2 --machine-type e2-medium --zone $ZONE」指令,即可建立 VM 虛擬主機,下列為指令的相關參數說明:
  • gcloud compute: 用於管理 Compute Engine 資源。
  • instances create: 建立新的執行個體,在這裡為建立新的 VM 虛擬主機。
  • gcelab2: 建立的 VM 虛擬主機名稱。
  • --machine-type: 指定採用「e2-medium」機器類型。
  • --zone: 指定在哪個 Zone 當中建立 VM 虛擬主機。倘若,省略 --zone 參數時,gcloud 指令將會採用預設值,也就是先前查詢 Project ID 詳細資訊內所顯示的預設值。





透過 gcloud 查詢特定資訊

透過「gcloud compute instances list」指令,可以查詢 Project ID 中所有的執行個體,或使用「gcloud compute instances list --filter="name=('gcelab2')"」指令,查詢特定執行個體的資訊。


透過「gcloud compute firewall-rules list」指令,查詢 Project ID 當中所有的防火牆規則,或使用「gcloud compute firewall-rules list --filter="network='default'"」指令,查詢防火牆規則中 Network 欄位為 default 的防火牆規則,或使用「gcloud compute firewall-rules list --filter="NETWORK:'default' AND ALLOW:'icmp'"」指令,查詢防火牆規則中 Network 欄位為 default 且允許 ICMP 的防火牆規則。






透過 gcloud 連線至 VM 虛擬主機

管理人員可以透過「gcloud compute ssh gcelab2 --zone $ZONE」指令,連線至剛才所部署建立名稱為 gcelab2 虛擬主機,可以看到預設採用 Debian 11 作業系統的 VM 虛擬主機。


由於,在這個實作當中,會為 VM 虛擬主機安裝 Nginx 網頁伺服器,然而預設情況下防火牆規則並不會允許 HTTP Port 80、HTTPs Port 443 網路流量通過。因此,管理人員可以透過「gcloud compute instances add-tags gcelab2 --tags http-server,https-server」指令,新增 Tag 名稱,使用「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」指令,更新防火牆規則以便放行 TCP Port 80 的網路流量,執行「gcloud compute firewall-rules list --filter=ALLOW:'80'」指令,確認允許的防火牆規則是否套用生效。

最後,透過「curl http://$(gcloud compute instances list --filter=name:gcelab2 --format='value(EXTERNAL_IP)')」指令,確認能否正確瀏覽 gcelab2 的 Nginx 預設網頁內容。






查看系統日誌

管理人員可以隨時透過「gcloud logging logs list」指令,查看所有類型的系統日誌,執行「gcloud logging logs list --filter="compute"」指令,僅查看 Compute 資源的系統日誌,執行「gcloud logging read "resource.type=gce_instance" --limit 5」指令,僅查看資源類型為「gce_instance」的系統日誌。


同樣的,在完成實作練習結束前,記得確認是否通過所有的檢查程序,才能確保獲得這個實作課程的積分,往下一個實作前進。