ACE-215:GCP 基礎架構即代碼(IaC)策略——Terraform、Infrastructure Manager 與 Config Connector 完全指南
前言
點點滑鼠開資源很快,但開到第三個環境你就會懷念有一份能 git diff、能 code review、砍掉重練也一模一樣的設定檔——這就是 IaC(Infrastructure as Code,基礎架構即代碼)要解決的事。在 GCP 上,Terraform 是 Google 官方推薦的首選工具;Infrastructure Manager 幫你把 Terraform 託管起來;Kubernetes 團隊則可以用 Config Connector 直接拿 YAML 管 GCP 資源。
這課的重點其實很集中:考試只會考幾個工具的「定位」和「什麼情境選誰」,剩下就是 Terraform 的 state 怎麼放。看這篇前你只要知道 Terraform 是什麼、GCS 是物件儲存就夠,K8s 不熟也沒關係,Config Connector 段落會白話帶過。
注意:Google Cloud Deployment Manager 已於 2025 年正式宣告棄用(Deprecated),2026 年 3 月 31 日終止支援。目前 ACE 考試指南已不再列出 Deployment Manager 作為 IaC 工具範例。
ACE 考試指南中的 IaC 範圍
根據目前的 ACE 考試指南 Section 2.4:
2.4 Planning and implementing resources through infrastructure as code. Considerations include:
- Infrastructure as code tooling (e.g., Fabric FAST, Config Connector, Terraform, Helm)
- Planning and executing infrastructure as code deployments, including versioning, state management, and updates
重點:考試考的是 Terraform、Config Connector、Fabric FAST、Helm,不是 Deployment Manager。
Terraform 基礎
什麼是 Terraform?
Terraform 是 HashiCorp 的開源 IaC 工具,使用 HCL(HashiCorp Configuration Language)宣告式語法定義基礎架構:
# main.tf — 建立一台 GCE VM
provider "google" {
project = "my-project-id"
region = "asia-east1"
}
resource "google_compute_instance" "web" {
name = "web-server"
machine_type = "e2-medium"
zone = "asia-east1-a"
boot_disk {
initialize_params {
image = "debian-cloud/debian-12"
}
}
network_interface {
network = "default"
access_config {} # 公開 IP
}
labels = {
env = "production"
}
}
核心工作流程
terraform init → 初始化,下載 Provider
│
terraform plan → 預覽變更(不實際執行)
│
terraform apply → 執行變更
│
terraform destroy → 銷毀所有資源
State 管理(考試重點)
Terraform 用 State 檔案追蹤實際基礎架構與設定的對應關係:
# backend.tf — 使用 GCS 作為遠端 State 後端
terraform {
backend "gcs" {
bucket = "my-terraform-state"
prefix = "prod/network"
}
}
| 概念 | 說明 |
|---|---|
| State 檔案 | 記錄所有受管資源的目前狀態(JSON 格式) |
| Remote Backend | 將 State 存在 GCS,支援團隊協作 |
| State Locking | 防止多人同時修改(GCS backend 內建並預設啟用,免設定) |
| Drift Detection | terraform plan 偵測手動變更 |
State 檔案可能包含敏感資訊(密碼、金鑰),務必使用 Remote Backend 並限制存取權限。
Terraform Module
Module 就是把一坨常用的 resource 打包成一個可帶參數的積木,跟你平常 import 函式庫一個意思:
# 使用 Google 官方的 VPC Module
module "vpc" {
source = "terraform-google-modules/network/google"
version = "~> 18.0" # 撰文時最新主版本;實際請查 Terraform Registry
project_id = "my-project-id"
network_name = "production-vpc"
subnets = [
{
subnet_name = "web-subnet"
subnet_ip = "10.10.10.0/24"
subnet_region = "asia-east1"
}
]
}
Module 來源:
- Terraform Registry:數千個社群模組
- Google 官方模組:
terraform-google-modules組織提供的驗證模組 - 本地路徑:團隊自建的內部模組
Infrastructure Manager(託管 Terraform)
什麼是 Infrastructure Manager?
Infrastructure Manager(Infra Manager)是 GCP 的託管 Terraform 服務,自動執行 terraform init、validate、apply:
你的 Terraform 設定(Git / GCS)
│
▼
Infrastructure Manager
│
├── terraform init(自動)
├── terraform validate(自動)
└── terraform apply(自動)
│
▼
GCP 資源建立完成
State 存在 GCS(自動管理)
核心功能
| 功能 | 說明 |
|---|---|
| 配置來源 | Git Repository 或 Cloud Storage Bucket |
| 執行環境 | 短暫的 Cloud Build 環境 |
| State 管理 | 自動存在 GCS(不用手動設定) |
| Preview | 預覽變更(等同 terraform plan) |
| 版本歷史 | 每次部署保留 Revision 記錄 |
操作範例
# 預覽部署
gcloud infra-manager previews create \
projects/my-project/locations/asia-east1/previews/my-preview \
--service-account=projects/my-project/iam/sa/infra-manager@my-project.iam.gserviceaccount.com \
--git-source-repo=https://github.com/my-org/infra-configs \
--git-source-directory=environments/prod \
--git-source-ref=main
# 執行部署
gcloud infra-manager deployments apply \
projects/my-project/locations/asia-east1/deployments/prod-network \
--service-account=projects/my-project/iam/sa/infra-manager@my-project.iam.gserviceaccount.com \
--git-source-repo=https://github.com/my-org/infra-configs \
--git-source-directory=environments/prod \
--git-source-ref=main
# 查看部署狀態
gcloud infra-manager deployments describe \
projects/my-project/locations/asia-east1/deployments/prod-network
定價
Infrastructure Manager 本身免費。你只需支付:
- Cloud Build 執行時間(免費層:2,500 build-minutes / 月,限
e2-standard-2預設機型;換更大的機型就不適用免費層) - Cloud Storage 存放 State 和設定檔(標準費率)
Config Connector(K8s 原生 IaC)
什麼是 Config Connector?
Config Connector 讓你用 Kubernetes YAML 管理 GCP 資源,做法是把 GCP 資源變成 Kubernetes Custom Resource:
# cloud-sql.yaml — 用 K8s YAML 建立 Cloud SQL
apiVersion: sql.cnrm.cloud.google.com/v1beta1
kind: SQLInstance
metadata:
name: my-database
namespace: my-namespace
spec:
databaseVersion: POSTGRES_15
region: asia-east1
settings:
tier: db-f1-micro
ipConfiguration:
ipv4Enabled: true
# 像管理 K8s 資源一樣管理 GCP 資源
kubectl apply -f cloud-sql.yaml
kubectl get sqlinstances
kubectl delete sqlinstance my-database
適用場景
- 團隊已經用 GitOps(把部署設定也放 Git,靠 PR merge 觸發部署的做法;常見工具 ArgoCD、Flux)管理 K8s
- 想要統一管理 K8s Workload 和 GCP 資源
- 不想引入 Terraform 額外工具鏈
支援範圍
Config Connector 支援 300+ GCP 資源類型,包含:
- Compute Engine、GKE、Cloud SQL
- BigQuery、Pub/Sub、Cloud Storage
- IAM、VPC、Cloud DNS 等
Fabric FAST
Fabric FAST(Foundation FAST)是 Google Cloud 提供的 Terraform-based 企業級地基框架:
Fabric FAST 提供:
├── Organization 設定
├── 資料夾結構(Folders)
├── 共享 VPC 設定
├── IAM 權限綁定
├── 日誌和監控
└── 安全基線
- 用於企業快速建立 GCP Landing Zone(企業在 GCP 開帳號的標準地基:組織結構、共用網路、權限、稽核一次設好)
- 基於 Terraform Module,符合 Google 最佳實踐
- ACE 考試指南明確列出,需要知道它的定位
Helm(K8s 套件管理)
Helm 是 Kubernetes 的套件管理工具,不直接管理 GCP 資源,但管理 GKE 上的應用部署:
# 安裝 Helm Chart(以 ingress-nginx 為例)
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm install my-ingress ingress-nginx/ingress-nginx
# 升級
helm upgrade my-ingress ingress-nginx/ingress-nginx --set controller.replicas=3
# 回滾
helm rollback my-ingress 1
- Chart:可重用的 K8s 應用範本
- Release:Chart 的一次安裝實例
- Values:可自訂的參數
- ACE 考試考它作為 IaC 工具鏈的一部分
Deployment Manager(棄用)
重要:已於 2026/3/31 終止支援
⚠️ Deployment Manager 已於 2026 年 3 月 31 日正式終止支援。 如果你手上還有 DM 部署,請用 DM Convert 工具搬到 Terraform 或 Config Connector。考試裡看到它,通常就是要被排除的那個錯誤選項。
Deployment Manager 是 GCP 原生 IaC 工具,使用 YAML + Jinja2/Python 範本:
# 歷史參考——DM 設定檔格式
resources:
- name: my-vm
type: compute.v1.instance
properties:
zone: asia-east1-a
machineType: zones/asia-east1-a/machineTypes/e2-medium
為什麼棄用?
- 僅支援 GCP:無法管理多雲資源
- Composite Types 已於 2022 年 2 月停止支援
- 社群小:Module 生態系遠不如 Terraform
- 無法偵測 Drift:不知道手動變更
- State 不透明:無法像 Terraform 一樣檢視和修改 State
遷移路徑
Deployment Manager 設定檔
│
▼
DM Convert 工具
│
├── 輸出 Terraform HCL
└── 輸出 KRM / Config Connector YAML
(KRM = Kubernetes Resource Model,
把資源寫成 K8s 風格的 YAML 物件)
│
▼
刪除 DM Deployment(--delete-policy=ABANDON)
保留既有資源,改用 Terraform / Infra Manager 管理
--delete-policy=ABANDON是遷移的關鍵——刪除 DM 追蹤但保留實際資源。
📝 考場提點
Deployment Manager 在考試裡幾乎一定是「要被排除 / 要遷移」的錯誤答案。看到它出現在選項,先把它劃掉再說。要記的關鍵字組合:
- 2026/3/31 已終止支援,新題不會要你拿它建東西
- 遷移工具是 DM Convert,輸出 Terraform HCL 或 Config Connector(KRM)YAML
--delete-policy=ABANDON:只刪掉 DM 的追蹤、保留實際資源,接手給 Terraform / Infra Manager 管——題目問「怎麼不停機就脫離 DM」答案就是它
IaC 工具選型
| 工具 | 語言 | 適用場景 | 考試重要度 |
|---|---|---|---|
| Terraform | HCL | 通用 IaC,多雲/GCP | ⭐⭐⭐ 最高 |
| Infra Manager | HCL(託管) | GCP 原生團隊、免管 State | ⭐⭐ 高 |
| Config Connector | K8s YAML | GitOps 團隊、K8s 原生 | ⭐⭐ 高 |
| Fabric FAST | HCL(框架) | 企業 Landing Zone | ⭐ 知道定位 |
| Helm | YAML(Chart) | GKE 應用部署 | ⭐ 知道定位 |
| DM(棄用) | YAML + Jinja2 | 遷移到 Terraform | ⚠️ 知道已棄用 |
選型公式
新建 GCP 專案、需要 IaC?
→ Terraform ✅
GCP 原生團隊、不想管 Terraform State?
→ Infrastructure Manager ✅
已有 GKE + GitOps 工作流?
→ Config Connector ✅
企業級 GCP Landing Zone 建設?
→ Fabric FAST + Terraform ✅
管理 GKE 上的應用部署?
→ Helm ✅
既有 Deployment Manager 設定?
→ 用 DM Convert 遷移到 Terraform ✅
📝 考場提點
IaC 選型題是這課的重災區,題目通常用觸發字眼把答案藏在敘述裡。考前 30 秒掃這張對照表:
- 通用 / 多雲 → Terraform
- GCP 原生、不想自己管 state → Infrastructure Manager(題目寫 managed Terraform 幾乎就是它)
- 已有 K8s + GitOps(ArgoCD / Flux) → Config Connector(題目寫 Kubernetes-native、用
kubectl管 GCP、CRD 就是它)- 企業 Landing Zone / 一次把組織地基蓋好 → Fabric FAST
- GKE 上裝應用(不是建 GCP 資源) → Helm
陷阱:看到「想用 K8s YAML 管 Cloud SQL / VPC」別選 Helm——Helm 管的是 GKE 上的應用,管 GCP 資源是 Config Connector。
IaC 最佳實踐
State 管理
# 永遠使用 Remote Backend
terraform {
backend "gcs" {
bucket = "my-terraform-state"
prefix = "env/prod"
}
}
- 永遠使用 Remote Backend(GCS),不要用本地 State
- State Locking 自動生效(GCS backend 內建並預設啟用,免設定;與 S3 不同,不必另外開 DynamoDB 或加
use_lockfile) - 分環境儲存:
prod/、staging/、dev/各自獨立 - 加密敏感資料:GCS 預設加密,可額外使用 CMEK
版本控制
- 所有 IaC 設定存入 Git
- 使用 Branch Protection:PR Review 才能合併
- CI/CD 自動跑
terraform plan:PR 自動顯示變更預覽 - Tag 每次成功部署:方便回溯
組織結構
infra-configs/
├── modules/ # 可重用模組
│ ├── vpc/
│ ├── gke-cluster/
│ └── cloud-sql/
├── environments/ # 環境設定
│ ├── prod/
│ ├── staging/
│ └── dev/
├── backend.tf # Remote State 設定
└── variables.tf # 共用變數
ACE 考試重點整理
必背知識點
- Terraform 是 GCP 推薦的首選 IaC 工具
- State 管理:使用 GCS 作為 Remote Backend,支援 Locking
terraform plan預覽變更、偵測 Drift- Infrastructure Manager 是託管 Terraform,免費使用
- Config Connector 讓 K8s 團隊用 YAML 管理 GCP 資源
- Fabric FAST 是企業 Landing Zone 框架(Terraform-based)
- Deployment Manager 已棄用(2026/3/31 終止支援)
常見陷阱題
Q:需要用 IaC 管理 GCP 基礎架構,選什麼工具? A:Terraform。Google 官方推薦,ACE 考試指南明確列出。
Q:Terraform State 應該存在哪裡? A:Cloud Storage(GCS)Remote Backend。不要存本地,要支援團隊協作和 State Locking。
Q:團隊用 GitOps 管理 GKE,想用同樣的方式管理 GCP 資源,選什麼?
A:Config Connector。將 GCP 資源變成 K8s Custom Resource,用 kubectl 和 ArgoCD/Flux 管理。
Q:Deployment Manager 還能用嗎? A:已棄用,2026/3/31 終止支援。應使用 DM Convert 工具遷移到 Terraform 或 Config Connector。
Q:Infrastructure Manager 和直接用 Terraform 有什麼不同? A:Infra Manager 是託管 Terraform——自動管理 State、自動執行 init/validate/apply,不需要在本地安裝 Terraform CLI。適合想要 GCP 原生體驗的團隊。
Q:什麼是 Fabric FAST? A:Google Cloud 提供的 Terraform-based 企業地基框架,快速建立符合最佳實踐的 GCP Organization、資料夾結構、Shared VPC 等。
總結
這課真正要帶走的,就是「哪個工具配哪個情境」這件事——細節都在上面那張 IaC 選型 考場提點裡,考前掃一次就夠。Terraform 是 GCP 的首選、state 放 GCS;Infrastructure Manager 是託管版的 Terraform、免費還幫你管 state;Config Connector 給 K8s + GitOps 團隊用 YAML 管 GCP 資源;Fabric FAST 蓋企業 Landing Zone;Helm 管 GKE 上的應用。Deployment Manager 已經 2026/3/31 終止支援,看到它就當錯誤答案。
考試最常考的還是 Terraform 的 state 管理(放 GCS Remote Backend、支援 locking)和 Plan/Apply 工作流,這幾乎是送分題,務必拿穩。
下一課 GCP-115:Cloud Memorystore 入門,來看看 GCP 的全託管記憶體資料庫服務。