跳至主要內容

gcloud CLI 速查表:照工作任務找指令

內文字級

gcloud CLI 速查表:照工作任務找指令
更新:2026-10-12

同一個設定要重做幾次時,gcloud 指令比重新點一遍 Console 容易保存和檢查;遇到問題,也能回頭看當時下了什麼指令。不過指令可重現,不代表它一定會用在對的專案或區域。

這份速查表按工作任務整理指令,包含帳號與專案、運算、儲存、網路及 IAM。查到指令後,先核對目前的帳號、專案和位置,再用 --help 確認所用版本的旗標。


gcloud 指令文法組裝圖:指令入口依序組合服務群組、資源、動作與旗標,套用目前帳號與專案情境後分流到運算、儲存、容器、資料庫、IAM、網路、訊息與監控資源

與其死背一百條指令,不如記住同一副骨架: gcloud → 服務群組 → 資源 → 動作 → flags。真正容易出錯的是上方的登入身分與 active project 情境;下方則表示輸出還能接 filter、format 或腳本,讓同一套文法從手動操作延伸到自動化。

查看流程與節點文字

箭頭表示流程方向;方括號與引號內是節點名稱,可搭配下方圖解閱讀。

flowchart TB
  subgraph CONTEXT[1|固定操作情境]
    direction TB
    A[讀回 account 與 project] --> B[確認 region/zone]
    B --> C[先用 list/describe 盤點]
    C --> D[用 --help 確認參數]
  end
  subgraph EXECUTE[2|依風險執行]
    direction TB
    E{會改動或刪除資源?}
    E -- 否 --> F[執行唯讀查詢]
    E -- 是 --> G[確認備份、相依與回復方式]
    G --> H[加上明確 project<br/>與 location]
    H --> I[執行變更]
  end
  subgraph VERIFY[3|讀回結果]
    direction TB
    K[重新 list/describe] --> L{結果符合預期?}
    L -- 是 --> J[保存結構化輸出]
    L -- 否 --> M[停止後續批次並回復]
  end
  D --> E
  F --> J
  I --> K

  classDef decision fill:#fef3c7,stroke:#d97706,color:#78350f
  classDef risk fill:#fee2e2,stroke:#dc2626,color:#7f1d1d
  classDef good fill:#dcfce7,stroke:#16a34a,color:#14532d
  class E,L decision
  class G,M risk
  class J good
先讀回身分與目標,再查詢現況與 help;變更命令使用明確的 project、region 或 zone,執行後重新 describe 或 list 驗證。高風險操作還要保留備份與回復路徑。

一、安裝與初始設定

macOS: brew install --cask google-cloud-sdk Linux / WSL: curl https://sdk.cloud.google.com | bash(自己機器上練手很方便;正式環境建議改用套件管理器安裝,之後更新比較好管) Windows: 從 Google Cloud CLI 安裝頁面 下載安裝程式。

gcloud init                          # 初始化(登入 + 選專案 + 選區域)
gcloud version                       # 確認目前版本
gcloud components list               # 查看元件(使用內建 component manager 的安裝方式)
gcloud components update             # 更新元件(APT/yum 安裝時改由套件管理器更新)
gcloud components install kubectl    # 安裝 kubectl 元件(若安裝方式允許)

安裝方式會改變更新方法: 使用 Google 提供的 archive/互動式 installer 時,可用 gcloud components;透過 APT 或 yum 安裝時,component manager 會停用,必須用相同套件管理器更新。不要把 components update 寫成所有主機都能跑的維護腳本。


二、環境設定與帳號管理

這是用 gcloud 的第一步,先把身份、專案和預設區域都設好。

gcloud auth login                                        # 登入 Google 帳號(給 gcloud CLI 使用)
gcloud auth list                                         # 列出已驗證的帳號
gcloud auth revoke ACCOUNT_EMAIL                         # 撤銷帳號驗證
gcloud auth print-access-token                           # 取得 access token(API 呼叫用)
gcloud auth application-default login                    # 本機程式/client library 使用的 ADC
gcloud config set auth/impersonate_service_account SA_EMAIL  # 以短效 token 模擬服務帳號
gcloud config set project PROJECT_ID                     # 設定預設專案
gcloud config set compute/region asia-east1              # 設定預設區域
gcloud config set compute/zone asia-east1-b              # 設定預設可用區
gcloud config list                                       # 查看目前所有設定值
gcloud config unset compute/zone                         # 取消特定設定
gcloud config get project                                # 查看目前專案 ID

gcloud auth login 的憑證供 gcloud CLI 本身使用;gcloud auth application-default login 建立的 ADC 則供本機程式與 client library 使用,兩者不要當成同一份設定。Google Cloud 上的 workload 優先 attached service account;外部 CI/CD 優先 Workload Identity Federation。只有舊系統無法使用短效憑證時,才考慮 activate-service-account --key-file,並限制金鑰的保存位置與生命週期。

查看流程與節點文字

箭頭表示流程方向;方括號與引號內是節點名稱,可搭配下方圖解閱讀。

flowchart TB
  A[誰需要取得憑證?] --> B{互動式人員操作?}
  B -- 是 --> C[gcloud auth login]
  C --> D{本機程式也要呼叫<br/>API?}
  D -- 是 --> E[application-default<br/>login<br/>或 service account<br/>impersonation]
  D -- 否 --> F[gcloud CLI<br/>credential]
  B -- 否 --> G{workload 在哪裡?}
  G -- Google Cloud --> H[Attached<br/>service account<br/>短效 ADC]
  G -- 外部 CI/地端/他雲 --> I[Workload Identity<br/>Federation]
  I --> J{舊系統無法聯邦?}
  J -- 否 --> K[短效 token,<br/>不保存 key]
  J -- 是 --> L[例外審核後使用<br/>SA key<br/>限制、輪替與撤銷]

  classDef decision fill:#fef3c7,stroke:#d97706,color:#78350f
  classDef risk fill:#fee2e2,stroke:#dc2626,color:#7f1d1d
  classDef good fill:#dcfce7,stroke:#16a34a,color:#14532d
  class B,D,G,J decision
  class H,I,K good
  class L risk
互動操作、程式 ADC 與 workload 身分是三條不同路徑。先選不需要長期 JSON key 的方式;服務帳號金鑰是相容性退路,不是 CI/CD 的預設答案。

操作習慣: 每次開新終端先用 gcloud auth list 與 gcloud config list 確認身分和專案;production 指令再明確加上 --project 與 location,避免只依賴隱藏的 active configuration。


三、Compute Engine(虛擬機)

開 VM、停 VM、做快照——這幾招幾乎天天用;ACE 考試指南 Section 3.1 也列了檢視執行中的執行個體與使用快照、映像檔。更多概念可參考 GCP 運算服務完整介紹。

# 建立 VM 執行個體
gcloud compute instances create my-vm \
  --zone=asia-east1-b --machine-type=e2-medium \
  --image-family=debian-12 --image-project=debian-cloud --boot-disk-size=50GB
gcloud compute instances list                                # 列出所有執行個體
gcloud compute instances describe my-vm --zone=asia-east1-b  # 查看詳細資訊
gcloud compute instances start my-vm --zone=asia-east1-b     # 啟動已停止的執行個體
gcloud compute instances stop my-vm --zone=asia-east1-b      # 停止執行個體(停止計費 CPU/RAM)
gcloud compute instances delete my-vm --zone=asia-east1-b    # 刪除執行個體
gcloud compute ssh my-vm --zone=asia-east1-b                 # SSH 連線
gcloud compute ssh my-vm --zone=asia-east1-b --command="uptime"  # SSH 執行指令
# 設定標籤(帳單分類用)
gcloud compute instances add-labels my-vm --zone=asia-east1-b --labels=env=prod,team=backend
# 變更機器類型(需先停止 VM)
gcloud compute instances set-machine-type my-vm --zone=asia-east1-b --machine-type=e2-standard-4
查看流程與節點文字

箭頭表示流程方向;方括號與引號內是節點名稱,可搭配下方圖解閱讀。

flowchart TB
  subgraph PREP[1|保存變更前狀態]
    direction TB
    A[describe VM 與磁碟] --> B{影響資料或開機?}
    B -- 是 --> C[建立 snapshot<br/>記錄 image 與設定]
    B -- 否 --> D[記錄目前設定]
  end
  subgraph CHANGE[2|執行變更]
    direction TB
    E{需要停止 VM?}
    E -- 是 --> F[確認維護窗口後 stop]
    F --> H[變更 machine type/磁碟]
    H --> I[start VM]
    E -- 否 --> G[執行可線上變更]
  end
  subgraph CHECK[3|驗證與回復]
    direction TB
    J[驗證 OS、應用與監控] --> K{健康檢查通過?}
    K -- 是 --> L[保留變更紀錄]
    K -- 否 --> M[回復設定或從<br/>snapshot 還原]
  end
  C --> E
  D --> E
  G --> J
  I --> J

  classDef decision fill:#fef3c7,stroke:#d97706,color:#78350f
  classDef risk fill:#fee2e2,stroke:#dc2626,color:#7f1d1d
  classDef good fill:#dcfce7,stroke:#16a34a,color:#14532d
  class B,E,K decision
  class C,M risk
  class L good
先 describe 保存現況,依資料風險建立 snapshot;需要停機的變更先確認維護窗口,完成後以應用健康而非只有 VM 狀態驗證。失敗時回復設定或從 snapshot 建立磁碟。

磁碟、快照與映像

# 建立持久磁碟
gcloud compute disks create my-disk --zone=asia-east1-b --size=100GB --type=pd-ssd
# 將磁碟掛載到 VM
gcloud compute instances attach-disk my-vm --disk=my-disk --zone=asia-east1-b
# 建立磁碟快照
gcloud compute snapshots create my-snapshot --source-disk=my-disk --source-disk-zone=asia-east1-b
gcloud compute snapshots list                                # 列出所有快照
# 從快照建立新磁碟
gcloud compute disks create restored-disk --source-snapshot=my-snapshot --zone=asia-east1-b
# 從磁碟建立自訂映像(不要假設 boot disk 一定與 VM 同名)
gcloud compute images create my-image --source-disk=BOOT_DISK --source-disk-zone=asia-east1-b
gcloud compute images list --filter="family:debian"          # 列出公開映像系列
gcloud compute images delete my-image                        # 刪除自訂映像

四、Cloud Storage(物件儲存)

注意:以下都用新版 gcloud storage 指令,gsutil 已經被標記為 Legacy,建議全面換成 gcloud storage。更多儲存策略可參考 GCP 儲存服務選型指南。

# 建立儲存桶
gcloud storage buckets create gs://my-bucket --location=asia-east1 --default-storage-class=STANDARD
gcloud storage buckets list                              # 列出所有儲存桶
gcloud storage buckets describe gs://my-bucket           # 查看詳細資訊
gcloud storage cp local-file.txt gs://my-bucket/         # 上傳檔案
gcloud storage cp gs://my-bucket/file.txt ./local-dir/   # 下載檔案
gcloud storage cp -r ./my-folder gs://my-bucket/         # 遞迴上傳整個目錄
gcloud storage rsync ./local-dir gs://my-bucket/backup/ --recursive  # 同步(只傳差異)
gcloud storage ls gs://my-bucket/                        # 列出物件
gcloud storage ls -l gs://my-bucket/                     # 列出物件詳細資訊
gcloud storage rm gs://my-bucket/old-file.txt            # 刪除物件
gcloud storage rm gs://my-bucket/old-folder/ --recursive # 遞迴刪除
# 設定生命週期(自動刪除過期物件)
gcloud storage buckets update gs://my-bucket --lifecycle-file=lifecycle.json
# 啟用統一存取控制
gcloud storage buckets update gs://my-bucket --uniform-bucket-level-access
gcloud storage buckets delete gs://my-bucket              # 刪除儲存桶(需先清空)
查看流程與節點文字

箭頭表示流程方向;方括號與引號內是節點名稱,可搭配下方圖解閱讀。

flowchart TB
  A[確認來源與目的 URI] --> B{一次性複製?}
  B -- 是 --> C{單檔還是目錄?}
  C -- 單檔 --> D[gcloud storage cp]
  C -- 目錄 --> E[cp --recursive]
  B -- 否,要同步 --> F[gcloud storage rsync]
  F --> G{要刪除目的端多餘物件?}
  G -- 否 --> H[先同步新增與變更]
  G -- 是 --> I[先用測試 prefix<br/>核對刪除範圍]
  D --> J[列出目的端並校驗]
  E --> J
  H --> J
  I --> K[確認後才啟用刪除選項]
  K --> J

  classDef decision fill:#fef3c7,stroke:#d97706,color:#78350f
  classDef risk fill:#fee2e2,stroke:#dc2626,color:#7f1d1d
  classDef good fill:#dcfce7,stroke:#16a34a,color:#14532d
  class B,C,G decision
  class I,K risk
  class J good
單一檔案或一次性目錄複製用 cp;需要讓目的端追上來源端時用 rsync。任何 recursive 或 delete 行為都先列出來源與目的端,再以測試 prefix 驗證,避免把方向寫反。

gsutil 遷移提醒: 新腳本優先用 gcloud storage。舊腳本不能只做字串替換,因為部分旗標、平行處理、checksum 與 rsync 行為不同;先對照官方遷移表並用非正式 bucket 驗證。


五、GKE(Google Kubernetes Engine)

ACE 考試指南列了部署 GKE 叢集(Section 2.1)與管理 node pool 等日常操作(Section 3.1)。更多 GKE 概念可參考 GKE 入門指南。

# 建立叢集(Autopilot;多數一般 workload 可先評估)
gcloud container clusters create-auto my-cluster --region=asia-east1
# 建立叢集(Standard 模式)
gcloud container clusters create my-cluster \
  --zone=asia-east1-b --num-nodes=3 --machine-type=e2-standard-4
gcloud container clusters list                               # 列出所有叢集
gcloud container clusters describe my-cluster --zone=asia-east1-b  # 查看詳細資訊
# 取得叢集憑證(配置 kubectl)
gcloud container clusters get-credentials my-cluster --zone=asia-east1-b
gcloud container clusters resize my-cluster --zone=asia-east1-b --num-nodes=5  # 調整節點數
gcloud container clusters upgrade my-cluster --zone=asia-east1-b --master      # 升級版本
gcloud container get-server-config --zone=asia-east1-b       # 列出可用 GKE 版本
gcloud container clusters delete my-cluster --zone=asia-east1-b  # 刪除叢集
# 節點池管理
gcloud container node-pools list --cluster=my-cluster --zone=asia-east1-b
gcloud container node-pools create gpu-pool \
  --cluster=my-cluster --zone=asia-east1-b --machine-type=n2-standard-4 --num-nodes=2
查看流程與節點文字

箭頭表示流程方向;方括號與引號內是節點名稱,可搭配下方圖解閱讀。

flowchart TB
  A[確認 project 與 location] --> B{需要建立新叢集?}
  B -- 是 --> C{需要直接控制 node pool?}
  C -- 否 --> D[create-auto<br/>Autopilot]
  C -- 是 --> E[create<br/>Standard]
  B -- 否 --> F[clusters list/describe]
  D --> G[get-credentials]
  E --> G
  F --> G
  G --> H[kubectl config<br/>current-context]
  H --> I[確認 namespace 與 RBAC]
  I --> J{目標正確?}
  J -- 否 --> K[切換 context/namespace]
  K --> H
  J -- 是 --> L[kubectl diff/apply]
  L --> M[rollout status 與事件驗證]

  classDef decision fill:#fef3c7,stroke:#d97706,color:#78350f
  classDef risk fill:#fee2e2,stroke:#dc2626,color:#7f1d1d
  classDef good fill:#dcfce7,stroke:#16a34a,color:#14532d
  class B,C,J decision
  class K risk
  class M good
建立或選定叢集後,get-credentials 只會更新 kubeconfig;真正執行 kubectl 前仍要讀回 current-context 與 namespace。跨專案、跨區管理時,這一步能避免把部署送到錯誤叢集。

注意: 拿到憑證後就能用 kubectl 操作叢集了。多叢集管理用 GKE 的 fleet 管理功能;這組功能先後叫過 Anthos 和 GKE Enterprise,官方在 2025-09-02 宣布併入標準 GKE。現行 ACE 考綱列的 GKE 項目是部署叢集、管理 node pool 與 Kubernetes 資源,沒有列多叢集管理。


六、Cloud Run(無伺服器容器)

部署容器最簡單的方式。更多 Serverless 選型可參考 GCP 無伺服器方案比較。

# 從容器映像部署
gcloud run deploy my-service \
  --image=asia-east1-docker.pkg.dev/PROJECT_ID/apps/my-image:COMMIT_SHA \
  --region=asia-east1 --allow-unauthenticated
# 從原始碼直接部署(自動 build)
gcloud run deploy my-service --source=. --region=asia-east1
gcloud run services list --region=asia-east1                 # 列出所有服務
gcloud run services describe my-service --region=asia-east1  # 查看服務詳細資訊
gcloud run revisions list --service=my-service --region=asia-east1  # 查看修訂版本
# 流量切換到特定修訂版本
gcloud run services update-traffic my-service --region=asia-east1 \
  --to-revisions=my-service-00005-abc=100
# 設定環境變數
gcloud run services update my-service --region=asia-east1 \
  --set-env-vars="DB_HOST=10.0.0.1,APP_ENV=production"
gcloud run services update my-service --region=asia-east1 --max-instances=10  # 最大執行個體數
gcloud run services logs read my-service --region=asia-east1  # 查看日誌
gcloud run services delete my-service --region=asia-east1     # 刪除服務
查看流程與節點文字

箭頭表示流程方向;方括號與引號內是節點名稱,可搭配下方圖解閱讀。

flowchart TB
  subgraph BUILD[1|建立不可變版本]
    direction TB
    A[source 或 immutable image tag] --> B[gcloud run deploy]
    B --> C[產生新 revision]
  end
  subgraph CANARY[2|少量流量驗證]
    direction TB
    D[以 tag/少量流量測試] --> E[檢查 logs、latency、5xx]
    E --> F{SLO 與功能通過?}
  end
  subgraph PROMOTE[3|晉級或回滾]
    direction TB
    I[逐步提高流量] --> J{完整流量仍健康?}
    J -- 否 --> G[流量切回健康 revision]
    J -- 是 --> K[完成發布並保留回滾點]
    G --> H[修正後從新 revision<br/>重新進入發布流程]
  end
  C --> D
  F -- 是 --> I
  F -- 否 --> G

  classDef decision fill:#fef3c7,stroke:#d97706,color:#78350f
  classDef risk fill:#fee2e2,stroke:#dc2626,color:#7f1d1d
  classDef good fill:#dcfce7,stroke:#16a34a,color:#14532d
  class F,J decision
  class G risk
  class K good
每次 deploy 產生不可變 revision。先以不接流量或少量流量驗證,再逐步提高比例;錯誤率或延遲超標時把流量切回上一個健康 revision,而不是重新覆寫舊版本。

映像路徑提醒: Container Registry 已停止寫入。新部署先在 Artifact Registry 建立 repository,使用 REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE:TAG;舊的 gcr.io URL 只有在已遷移並由 Artifact Registry 承載時才可繼續使用。正式環境避免 latest,用 commit SHA 或 digest 才能追溯與回滾。


七、Cloud Run functions(無伺服器函式)

新函式可直接透過 Cloud Run Admin API 建立:gcloud run deploy 加上 --function,平台會用 buildpacks 與 Cloud Build 從原始碼建置,並把產物放進 Artifact Registry。事件來源則另外建立 Eventarc trigger,讓「部署執行單元」與「指定事件路由」成為兩個可分別驗證的步驟。

# 部署公開 HTTP function;正式 API 應依需求保留驗證
gcloud run deploy my-function --source=. --function=helloWorld \
  --base-image=nodejs24 --region=asia-east1 --allow-unauthenticated
gcloud run services describe my-function --region=asia-east1       # 查看函式服務
gcloud run services logs read my-function --region=asia-east1      # 查看日誌

# 為已部署的 function 建立 Cloud Storage finalized 事件觸發器
gcloud eventarc triggers create process-upload-trigger \
  --location=asia-east1 \
  --destination-run-service=my-function --destination-run-region=asia-east1 \
  --event-filters="type=google.cloud.storage.object.v1.finalized" \
  --event-filters="bucket=my-bucket" --service-account=TRIGGER_SA
gcloud eventarc triggers list --location=asia-east1                 # 列出觸發器
gcloud eventarc triggers delete process-upload-trigger --location=asia-east1
gcloud run services delete my-function --region=asia-east1         # 刪除函式服務
查看流程與節點文字

箭頭表示流程方向;方括號與引號內是節點名稱,可搭配下方圖解閱讀。

flowchart TB
  A[函式原始碼] --> B[gcloud run deploy<br/>--source --function]
  B --> C[Cloud Build/<br/>buildpacks]
  C --> D[Artifact<br/>Registry image]
  D --> E[Cloud Run revision]
  F{觸發來源?} -- HTTP --> G[呼叫 service URL]
  F -- Cloud event --> H[Eventarc trigger]
  H --> I[事件篩選與 trigger SA]
  G --> E
  I --> E
  E --> J[Functions<br/>Framework handler]
  J --> K{處理成功?}
  K -- 是 --> L[記錄結果與指標]
  K -- 否,事件型 --> M[依 retry/<br/>dead-letter 設計重送]
  K -- 否,HTTP --> N[回傳錯誤並由<br/>caller 決定重試]

  classDef decision fill:#fef3c7,stroke:#d97706,color:#78350f
  classDef risk fill:#fee2e2,stroke:#dc2626,color:#7f1d1d
  classDef good fill:#dcfce7,stroke:#16a34a,color:#14532d
  class F,K decision
  class M,N risk
  class L good
函式先部署成 Cloud Run service;HTTP 呼叫直接進入服務,雲端事件則由 Eventarc 篩選後以指定 service account 驗證呼叫。刪除服務前也要盤點並清除 trigger,避免留下失效路由。

已用 Cloud Functions v2 API 建立的既有函式,仍可為相容性使用 gcloud functions deploy --gen2 管理;由 gcloud run deploy --function 建立的函式則用 gcloud run 管理。兩種管理介面不要混用。可用 gcloud functions runtimes list 或 Cloud Run runtime 文件確認目前可用版本,不要把 runtime 寫死在長期腳本裡。


八、Cloud SQL(關聯式資料庫)

# 建立 MySQL 執行個體
gcloud sql instances create my-sql --database-version=MYSQL_8_0 \
  --cpu=2 --memory=7680MB --region=asia-east1
# 建立 PostgreSQL 執行個體
gcloud sql instances create my-pg --database-version=POSTGRES_16 \
  --cpu=2 --memory=7680MB --region=asia-east1
gcloud sql instances list                                    # 列出所有執行個體
gcloud sql instances describe my-sql                         # 查看詳細資訊
gcloud sql connect my-sql --user=root                        # 連線到 Cloud SQL
gcloud sql databases create my-database --instance=my-sql    # 建立資料庫
gcloud sql databases list --instance=my-sql                  # 列出資料庫
gcloud sql users create app-user --instance=my-sql --password=SECURE_PASSWORD  # 建立使用者
gcloud sql instances patch my-sql --backup-start-time=02:00  # 設定自動備份
gcloud sql instances restart my-sql                          # 重新啟動
gcloud sql instances delete my-sql                           # 刪除執行個體
查看流程與節點文字

箭頭表示流程方向;方括號與引號內是節點名稱,可搭配下方圖解閱讀。

flowchart TB
  subgraph PLAN[1|建立資料庫服務]
    direction TB
    A[選 engine、region、edition 與容量] --> B[建立 Cloud SQL instance]
    B --> C{連線路徑?}
  end
  subgraph ACCESS[2|建立安全連線]
    direction TB
    D[設定私有<br/>VPC/PSC 與 DNS] --> F[建立 database<br/>與低權限 user]
    E[授予 Connector/<br/>Auth Proxy<br/>runtime SA 權限] --> F
    F --> H[應用以 Secret/IAM 連線]
  end
  subgraph RECOVERY[3|證明可觀測且可復原]
    direction TB
    G[啟用 backup 與 PITR] --> I[檢查 connection、latency、storage]
    I --> J{還原演練通過 RTO/RPO?}
    J -- 否 --> K[修正備份、<br/>容量或 runbook]
    J -- 是 --> L[納入監控與變更流程]
  end
  C -- 私有 IP/PSC --> D
  C -- Connector/Auth Proxy --> E
  H --> G
  K --> G

  classDef decision fill:#fef3c7,stroke:#d97706,color:#78350f
  classDef risk fill:#fee2e2,stroke:#dc2626,color:#7f1d1d
  classDef good fill:#dcfce7,stroke:#16a34a,color:#14532d
  class C,J decision
  class K risk
  class L good
建立 instance 只是起點;還要選定連線路徑、runtime service account、資料庫與使用者,再啟用並實測 backup/PITR。最後以應用連線、監控與還原演練證明服務真的可用。

--cpu/--memory 適合 Cloud SQL Enterprise 的 custom machine;Enterprise Plus 與特定版本可能需要不同 tier。建立前先跑 gcloud sql tiers list 並查目標 Region。不要把真實密碼直接放進 shell history;production 連線優先 Cloud SQL connector/Auth Proxy、專用 service account 與 Secret Manager。


九、IAM(身份與存取管理)

IAM 是 ACE 會碰到的主題,平常遇到權限問題也常從這裡查起。想看身分之外的防護層次,可接著讀 GCP 資安怎麼分層?。

gcloud projects get-iam-policy PROJECT_ID                    # 列出專案 IAM 政策
# 為使用者新增角色
gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="user:alice@example.com" --role="roles/compute.viewer"
# 移除使用者角色
gcloud projects remove-iam-policy-binding PROJECT_ID \
  --member="user:alice@example.com" --role="roles/compute.viewer"
gcloud iam roles list                                        # 列出所有預定義角色
gcloud iam roles describe roles/compute.admin                # 查看角色權限
# 建立服務帳號
gcloud iam service-accounts create my-app-sa --display-name="My Service Account"
gcloud iam service-accounts list                             # 列出所有服務帳號
# 為服務帳號授予角色
gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="serviceAccount:my-app-sa@PROJECT_ID.iam.gserviceaccount.com" \
  --role="roles/storage.objectViewer"
# 模擬服務帳號身份
gcloud auth print-access-token \
  --impersonate-service-account=my-app-sa@PROJECT_ID.iam.gserviceaccount.com
# 建立自訂角色
gcloud iam roles create customViewer --project=PROJECT_ID \
  --title="Custom Viewer" --permissions=compute.instances.list,compute.instances.get
查看流程與節點文字

箭頭表示流程方向;方括號與引號內是節點名稱,可搭配下方圖解閱讀。

flowchart TB
  subgraph REQUEST[1|把需求說成權限]
    direction TB
    A[誰需要存取?<br/>principal] --> B[哪個資源?<br/>resource]
    B --> C[要做哪些 action?]
    C --> D[列出必要 permissions]
  end
  subgraph ROLE[2|選擇最窄角色與範圍]
    direction TB
    E{有合適 predefined role?}
    E -- 是 --> F[選最窄角色]
    E -- 否 --> G[建立並維護 custom role]
    F --> H[綁定在最低必要層級]
    G --> H
  end
  subgraph REVIEW[3|模擬、套用、驗證]
    direction TB
    I[Policy Simulator/<br/>同儕審查] --> J{會造成權限外溢?}
    J -- 是 --> K[縮小角色、條件或資源範圍]
    J -- 否 --> L[套用 binding]
    L --> M[驗證存取與 Audit Logs]
  end
  D --> E
  H --> I
  K --> I

  classDef decision fill:#fef3c7,stroke:#d97706,color:#78350f
  classDef risk fill:#fee2e2,stroke:#dc2626,color:#7f1d1d
  classDef good fill:#dcfce7,stroke:#16a34a,color:#14532d
  class E,J decision
  class K risk
  class M good
把 principal、resource 與必要 action 說清楚,再從權限集合尋找最窄的 predefined role;先在最小資源範圍模擬與審查,授權後用 impersonation 或實際操作驗證並保留 audit evidence。

ACE 考試重點: 搞懂 Principal(主體)+ Role(角色)+ Resource(資源)三者怎麼綁在一起。盡量用預定義角色,守住最小權限原則。服務帳號金鑰能不用就不用,改走 Workload Identity Federation 或 impersonation。


十、VPC 與防火牆(網路管理)

gcloud compute networks create my-vpc --subnet-mode=custom   # 建立 VPC(自訂子網路模式)
# 建立子網路
gcloud compute networks subnets create my-subnet \
  --network=my-vpc --region=asia-east1 --range=10.0.1.0/24
gcloud compute networks list                                 # 列出所有 VPC
gcloud compute networks subnets list                         # 列出所有子網路
# 建立防火牆規則(允許 SSH)
gcloud compute firewall-rules create allow-ssh \
  --network=my-vpc --allow=tcp:22 --source-ranges=ADMIN_CIDR --target-tags=allow-ssh
# 建立防火牆規則(允許 HTTP/HTTPS)
gcloud compute firewall-rules create allow-web \
  --network=my-vpc --allow=tcp:80,tcp:443 --source-ranges=0.0.0.0/0
gcloud compute firewall-rules list                           # 列出所有防火牆規則
gcloud compute firewall-rules describe allow-ssh             # 查看特定規則
gcloud compute firewall-rules delete allow-ssh               # 刪除防火牆規則
gcloud compute addresses create my-ip --region=asia-east1    # 預留靜態外部 IP
gcloud compute addresses list                                # 列出預留 IP
# 建立 Cloud NAT(讓私有 VM 連外網)
gcloud compute routers create my-router --network=my-vpc --region=asia-east1
gcloud compute routers nats create my-nat --router=my-router --region=asia-east1 \
  --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges
查看流程與節點文字

箭頭表示流程方向;方括號與引號內是節點名稱,可搭配下方圖解閱讀。

flowchart TB
  A[重現來源、目的、<br/>協定與 port] --> B{DNS 解析正確?}
  B -- 否 --> C[修正 record/<br/>resolver]
  B -- 是 --> D{route 與 next<br/>hop 存在?}
  D -- 否 --> E[修正 subnet/<br/>route/peering]
  D -- 是 --> F{ingress/egress<br/>firewall 允許?}
  F -- 否 --> G[核對 priority、<br/>target SA/tag]
  F -- 是 --> H{需要 NAT<br/>或回程路由?}
  H -- 是但缺少 --> I[修正 NAT/<br/>對端 route]
  H -- 已成立 --> J{OS firewall<br/>與應用監聽?}
  J -- 否 --> K[修正 guest OS/<br/>listen address]
  J -- 是 --> L[用 Connectivity<br/>Tests/<br/>flow logs 驗證]

  classDef decision fill:#fef3c7,stroke:#d97706,color:#78350f
  classDef risk fill:#fee2e2,stroke:#dc2626,color:#7f1d1d
  classDef good fill:#dcfce7,stroke:#16a34a,color:#14532d
  class B,D,F,H,J decision
  class C,E,G,I,K risk
  class L good
從名稱解析與目的 IP 開始,再確認 route、firewall target、NAT/回程與 guest OS。每一層都先找證據,避免同時修改多條防火牆規則後仍不知道真正根因。

ADMIN_CIDR 必須換成受控來源範圍;不要為了排錯把 SSH 對 0.0.0.0/0 開放。能使用 IAP TCP forwarding 或受管入口時,通常不需要給 VM 公開 SSH 來源。


十一、Cloud Build(CI/CD)

想把這些指令接成部署流程,可參考 用 Cloud Build 串起測試、建置與部署。

# 建立 Artifact Registry Docker repository(每個 location/repository 做一次)
gcloud artifacts repositories create apps --repository-format=docker --location=asia-east1
gcloud builds submit \
  --tag=asia-east1-docker.pkg.dev/PROJECT_ID/apps/my-image:COMMIT_SHA  # 提交建置
gcloud builds submit --config=cloudbuild.yaml                # 使用設定檔建置
gcloud builds list                                           # 列出建置記錄
gcloud builds describe BUILD_ID                              # 查看建置詳情
gcloud builds log BUILD_ID                                   # 查看建置日誌
gcloud builds triggers list                                  # 列出觸發器
gcloud builds triggers run my-trigger --branch=main          # 手動執行觸發器
# 以已建立的 2nd gen repository connection 建立 GitHub 觸發器
gcloud builds triggers create github \
  --name=main-trigger --region=asia-east1 \
  --repository=projects/PROJECT_ID/locations/asia-east1/connections/CONNECTION/repositories/REPOSITORY \
  --branch-pattern="^main$" --build-config=cloudbuild.yaml
查看流程與節點文字

箭頭表示流程方向;方括號與引號內是節點名稱,可搭配下方圖解閱讀。

flowchart TB
  subgraph GATE[1|來源與品質閘門]
    direction TB
    A[Git commit/tag] --> B[Cloud Build trigger]
    B --> C[測試、lint、policy checks]
    C --> D{所有 gate 通過?}
    D -- 否 --> E[停止建置並回報]
  end
  subgraph ARTIFACT[2|建立可追溯產物]
    direction TB
    F[建置 image] --> G[掃描並推送<br/>Artifact Registry<br/>tag = commit SHA]
    G --> H[部署同一 digest 到測試環境]
  end
  subgraph RELEASE[3|驗證與晉級]
    direction TB
    I{功能與 SLO 通過?}
    I -- 否 --> J[不晉級/<br/>回滾健康 digest]
    I -- 是 --> K[核准後晉級 production]
    K --> L[監控、Audit Logs<br/>與 provenance]
  end
  D -- 是 --> F
  H --> I

  classDef decision fill:#fef3c7,stroke:#d97706,color:#78350f
  classDef risk fill:#fee2e2,stroke:#dc2626,color:#7f1d1d
  classDef good fill:#dcfce7,stroke:#16a34a,color:#14532d
  class D,I decision
  class E,J risk
  class L good
Trigger 只負責啟動;build 仍要先測試與掃描,再以 commit SHA 產生不可變 Artifact Registry image。部署後以健康指標決定晉級或回滾,避免同一個 latest tag 指向不同內容。

十二、Pub/Sub(訊息佇列)

更多概念可參考 Pub/Sub 事件驅動架構。

gcloud pubsub topics create my-topic                         # 建立主題
gcloud pubsub topics list                                    # 列出所有主題
gcloud pubsub topics publish my-topic --message="Hello!"     # 發布訊息
# 發布訊息並附帶屬性
gcloud pubsub topics publish my-topic --message="Order created" \
  --attribute="type=order,priority=high"
gcloud pubsub subscriptions create my-sub --topic=my-topic   # 建立訂閱
gcloud pubsub subscriptions list                             # 列出所有訂閱
gcloud pubsub subscriptions pull my-sub --limit=10           # 拉取訊息
gcloud pubsub subscriptions pull my-sub --limit=10 --auto-ack  # 拉取並自動確認
gcloud pubsub subscriptions delete my-sub                    # 刪除訂閱
gcloud pubsub topics delete my-topic                         # 刪除主題
查看流程與節點文字

箭頭表示流程方向;方括號與引號內是節點名稱,可搭配下方圖解閱讀。

flowchart TB
  A[Publisher] --> B[Topic]
  B --> C[Subscription]
  C --> D[Consumer pull/push]
  D --> E{業務處理成功?}
  E -- 是 --> F[提交副作用]
  F --> G[Acknowledge]
  E -- 否 --> H[不 ack/negative ack]
  H --> I[依 backoff 重送]
  I --> J{超過最大嘗試?}
  J -- 否 --> D
  J -- 是 --> K[Dead-letter topic]
  K --> L[告警、修復後 replay]

  classDef decision fill:#fef3c7,stroke:#d97706,color:#78350f
  classDef risk fill:#fee2e2,stroke:#dc2626,color:#7f1d1d
  classDef good fill:#dcfce7,stroke:#16a34a,color:#14532d
  class E,J decision
  class H,I,K risk
  class G,L good
pull 取得訊息不代表工作完成;consumer 成功提交副作用後才 ack。處理失敗或 ack deadline 到期會重送,因此業務處理要能去重,反覆失敗則導向 dead-letter topic。

--auto-ack 適合手動 lab 或已確定「收到就算完成」的情境;真實 consumer 應在副作用成功後 ack,並以 message ID 或業務 key 設計冪等處理。


十三、監控與日誌

gcloud logging read "resource.type=gce_instance" --limit=20  # 讀取 VM 日誌
# 讀取 Cloud Run 服務日誌
gcloud logging read "resource.type=cloud_run_revision AND \
  resource.labels.service_name=my-service" --limit=50
gcloud logging read "severity >= ERROR" --limit=20           # 讀取錯誤日誌
gcloud logging read "timestamp >= \"2026-03-19T00:00:00Z\"" --limit=100  # 指定時間範圍
# 寫入自訂日誌
gcloud logging write my-custom-log "Test message" --severity=INFO
gcloud logging metrics list                                  # 列出日誌指標
# 建立日誌匯出 Sink
gcloud logging sinks create my-sink storage.googleapis.com/my-log-bucket \
  --log-filter="severity >= WARNING"
gcloud monitoring policies list                              # 列出告警政策
gcloud monitoring uptime list-configs                        # 查看 uptime check

十四、帳單與專案管理

# 建立新專案
gcloud projects create my-new-project --name="My New Project" --organization=ORG_ID
gcloud projects list                                         # 列出所有專案
gcloud projects describe PROJECT_ID                          # 查看專案詳情
gcloud config set project OTHER_PROJECT_ID                   # 切換專案
gcloud projects delete PROJECT_ID                            # 刪除專案(30 天內可復原)
gcloud billing accounts list                                 # 列出帳單帳戶
gcloud billing projects describe PROJECT_ID                  # 查看專案帳單連結
# 連結帳單帳戶
gcloud billing projects link PROJECT_ID --billing-account=BILLING_ACCOUNT_ID
gcloud services enable compute.googleapis.com                # 啟用 API
# 批次啟用多個 API
gcloud services enable compute.googleapis.com container.googleapis.com \
  run.googleapis.com cloudfunctions.googleapis.com
gcloud services list --enabled                               # 列出已啟用 API
gcloud services list --available                             # 列出所有可用 API

十五、進階技巧

gcloud list 查詢輸出流程:使用 filter 篩選、sort-by 排序、limit 限量、format 決定 table value 或 json 輸出,並在交給批次操作前確認結果數量與資源範圍

filter、sort-by、limit 與 format 是可依需求組合的查詢和呈現工具,不代表固定的內部執行順序。人工檢查用 table、shell 取值用 value、程式交接用 JSON;正式自動化不要解析預設表格文字。

格式化輸出

gcloud compute instances list --format=json                  # JSON 格式(程式處理用)
gcloud compute instances list --format=yaml                  # YAML 格式
gcloud compute instances list \
  --format="table(name, zone.basename(), machineType.basename(), status)"  # 自訂欄位
gcloud compute instances list --format="value(name)"         # 只輸出值(腳本用)
gcloud compute instances list --format="csv(name, zone, status)"  # CSV 格式

篩選結果

gcloud compute instances list --filter="status=RUNNING"      # 篩選執行中的 VM
gcloud compute instances list --filter="zone:asia-east1"     # 篩選特定區域
gcloud compute instances list --filter="name~prod"           # 名稱包含 prod
gcloud compute instances list --filter="status=RUNNING AND zone:asia-east1"  # 組合條件
gcloud compute instances list --filter="labels.env=production"  # 篩選標籤

組態切換(多環境管理)

gcloud Named Configurations 多環境切換:dev staging prod 各自保存 account project region,啟用指定設定後讀回 active context,再確認目標 resource 才執行命令;單次 flag override 不會永久修改設定

Named Configuration 是方便切換 account、project、region 等設定的工具,不是 IAM 隔離邊界。啟用後用 gcloud config list 讀回 context;單次 flags 只覆寫當次命令,不代表已永久改動 named configuration。

gcloud config configurations create dev-config               # 建立命名組態
gcloud config configurations activate dev-config             # 切換到指定組態
gcloud config set project dev-project-id                     # 在組態中設定專案
gcloud config configurations list                            # 列出所有組態
gcloud config configurations delete old-config               # 刪除組態
gcloud compute instances list --configuration=prod-config    # 用特定組態執行(不切換)

實用情境: 同時要顧 dev、staging、prod 三個環境時,開三個 configuration 來快速切換,就不會不小心動到正式環境。

批次操作

# 第一步只輸出候選清單;人工檢查 target-vms.csv 後才進下一步
gcloud compute instances list --filter="labels.cleanup=true" \
  --format="csv[no-heading](name,zone.basename())" > target-vms.csv

# 第二步逐筆執行並保留確認提示;變數一律加引號
while IFS=, read -r instance_name instance_zone; do
  gcloud compute instances delete "$instance_name" --zone="$instance_zone"
done < target-vms.csv

gcloud compute instances delete my-vm --zone=asia-east1-b --quiet  # --quiet 跳過確認
gcloud compute instances list --project=other-project-id     # --project 操作其他專案
查看流程與節點文字

箭頭表示流程方向;方括號與引號內是節點名稱,可搭配下方圖解閱讀。

flowchart TB
  subgraph SCOPE[1|凍結候選範圍]
    direction TB
    A[用明確 filter 產生候選] --> B[輸出 CSV/JSON 檔]
    B --> C[核對 project、<br/>location、數量]
    C --> D[排除 owner/<br/>例外/受保護資源]
    D --> E{備份與回復條件滿足?}
    E -- 否 --> F[停止,不進入執行階段]
  end
  subgraph EXEC[2|小批次執行與驗證]
    direction TB
    G[同儕核准候選清單] --> H[小批次執行]
    H --> I[重新 list/describe<br/>與健康驗證]
    I --> J{失敗或範圍異常?}
    J -- 是 --> K[立即停止並回復]
  end
  subgraph DONE[3|決定下一批]
    direction TB
    L{還有下一批?}
    L -- 是 --> N[以同一核准清單<br/>重複小批次執行與驗證]
    L -- 否 --> M[保存稽核紀錄]
  end
  E -- 是 --> G
  J -- 否 --> L

  classDef decision fill:#fef3c7,stroke:#d97706,color:#78350f
  classDef risk fill:#fee2e2,stroke:#dc2626,color:#7f1d1d
  classDef good fill:#dcfce7,stroke:#16a34a,color:#14532d
  class E,J,L decision
  class F,K risk
  class M good
不要把 list 直接 pipe 到 delete。先輸出不可變候選清單,核對 project、數量、owner、例外與備份,再以同一份清單執行;每批後立即驗證,超過失敗門檻就停止。

--quiet 不是自動化品質保證,只是略過互動確認。只有當 target 已由前一個審核階段固定、失敗處理清楚,而且腳本能停止與記錄時才使用。


十六、ACE 備考用的 gcloud 指令整理

官方 ACE 考試指南沒有列出指令清單。下面依考試指南的工作項目,把前面各節的指令再整理一次;更多考試策略請參考 ACE 認證考試攻略。

# ===== gcloud 組態(日常設定,考試指南沒有逐項對應)=====
gcloud config set project PROJECT_ID             # 切換專案
gcloud config set compute/zone ZONE              # 設定預設可用區
gcloud config configurations activate NAME       # 切換組態

# ===== Compute Engine(Section 2.1、3.1)=====
gcloud compute instances create ...              # 建立 VM(注意各參數)
gcloud compute instances stop/start/delete       # 生命週期管理
gcloud compute ssh VM_NAME                       # SSH 連線
gcloud compute snapshots create ...              # 建立快照(備份)
gcloud compute images create ...                 # 建立自訂映像

# ===== IAM 與安全(Section 4)=====
gcloud projects add-iam-policy-binding ...       # 授予角色(主體+角色+資源)
gcloud iam service-accounts create ...           # 建立服務帳號
gcloud iam roles describe ROLE                   # 查看角色權限
gcloud config set auth/impersonate_service_account SA_EMAIL  # 模擬服務帳號(Section 4.2)

# ===== GKE(Section 2.1、3.1)=====
gcloud container clusters create ...             # 建立叢集
gcloud container clusters get-credentials        # 取得 kubectl 憑證
gcloud container clusters resize ...             # 調整節點數

# ===== 無伺服器(Section 2.1、3.1)=====
gcloud run deploy ...                            # 部署 Cloud Run
gcloud run deploy ... --function=ENTRY_POINT     # 部署 Cloud Run function

# ===== 儲存與資料庫(Section 2.2、3.2)=====
gcloud storage cp / rsync                        # Cloud Storage 操作
gcloud sql instances create ...                  # 建立 Cloud SQL
gcloud sql connect INSTANCE                      # 連線 Cloud SQL

# ===== API 管理(Section 1.1)=====
gcloud services enable SERVICE_NAME              # 啟用 API
gcloud services list --enabled                   # 列出已啟用 API

備考提醒: 不必背完整語法,重點是搞懂每個指令拿來做什麼、關鍵參數有哪些。


十七、一頁速查表(精簡版)

收藏這 30 條,覆蓋 80% 的日常操作:

# ===== 帳號與設定 =====
gcloud init                                    # 初始化
gcloud auth login                              # 登入
gcloud config set project PROJECT_ID           # 切換專案
gcloud config set compute/zone ZONE            # 設定預設可用區
gcloud config list                             # 查看設定

# ===== Compute Engine =====
gcloud compute instances create NAME ...       # 建立 VM
gcloud compute instances list                  # 列出 VM
gcloud compute instances stop NAME             # 停止 VM
gcloud compute instances delete NAME           # 刪除 VM
gcloud compute ssh NAME                        # SSH 連線

# ===== Cloud Storage =====
gcloud storage cp FILE gs://BUCKET/            # 上傳檔案
gcloud storage cp gs://BUCKET/FILE ./          # 下載檔案
gcloud storage ls gs://BUCKET/                 # 列出物件
gcloud storage buckets create gs://BUCKET      # 建立桶

# ===== GKE =====
gcloud container clusters create NAME ...      # 建立叢集
gcloud container clusters get-credentials NAME # 取得憑證

# ===== Cloud Run =====
gcloud run deploy SERVICE --image=IMAGE        # 部署服務
gcloud run services list                       # 列出服務

# ===== IAM =====
gcloud iam service-accounts create NAME        # 建立服務帳號
gcloud projects add-iam-policy-binding ...     # 授予角色

# ===== 資料庫 =====
gcloud sql instances create NAME ...           # 建立 Cloud SQL
gcloud sql connect INSTANCE                    # 連線資料庫

# ===== 網路 =====
gcloud compute networks create NAME            # 建立 VPC
gcloud compute firewall-rules create NAME ...  # 建立防火牆規則

# ===== 服務管理 =====
gcloud services enable SERVICE_NAME            # 啟用 API
gcloud services list --enabled                 # 列出已啟用 API
gcloud projects list                           # 列出專案

# ===== 實用旗標 =====
--format=json                                  # JSON 輸出
--filter="KEY=VALUE"                           # 篩選結果
--quiet                                        # 跳過確認
--project=PROJECT_ID                           # 指定專案

官方命令參考與查核範圍

本文最後查核日期為 2026-08-04。gcloud 指令與服務旗標會隨元件版本、release track、API 與安裝方式改變;正式執行前使用 gcloud version、gcloud COMMAND --help 與對應服務 reference 核對。

總結

這份速查表適合在忘記指令語法時回來查。實際操作前,仍要先確認目前的 Project、Region 和登入身分,尤其是刪除、修改權限或切換正式環境的指令。

依目前需求延伸閱讀:

讀完後,留一個學習紀錄

試著用自己的話說出一個重點,以及你會如何運用。實作文章請先核對結果與清理資源,再標記為讀完。

文章進度以你確認讀完的標記為準,可隨時取消。舊版造訪紀錄保留,但不計入讀完;這份自評不代表已掌握內容。

留言討論

文章目錄與系列

徽章解鎖!