ACE-215:GCP 基礎架構即代碼(IaC)策略——Terraform、Infrastructure Manager 與 Config Connector 完全指南
前言
Infrastructure as Code(IaC)是雲端維運的基本功,用程式碼定義基礎架構,好處是可以版本控制、隨時重現、也方便事後稽核。在 GCP 上,Terraform 是 Google 官方推薦的首選 IaC 工具;Infrastructure Manager 幫你把 Terraform 託管起來;至於 Kubernetes 團隊,則可以用 Config Connector 直接拿 YAML 管 GCP 資源。
這篇文章是 ACE 進階系列第 10 課,帶你搞懂 GCP 上的 IaC 策略和選型。
注意: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 自動支援) |
| Drift Detection | terraform plan 偵測手動變更 |
State 檔案可能包含敏感資訊(密碼、金鑰),務必使用 Remote Backend 並限制存取權限。
Terraform Module
Module 是 Terraform 的可重用元件,類似程式語言的函式庫:
# 使用 Google 官方的 VPC Module
module "vpc" {
source = "terraform-google-modules/network/google"
version = "~> 9.0"
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 執行時間(免費層:120 build-minutes / 天(per day))
- 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(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(地基架構)
- 基於 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 停止支援
- 社群小——Module 生態系遠不如 Terraform
- 無法偵測 Drift——不知道手動變更
- State 不透明——無法像 Terraform 一樣檢視和修改 State
遷移路徑
Deployment Manager 設定檔
│
▼
DM Convert 工具
│
├── 輸出 Terraform HCL
└── 輸出 KRM / Config Connector YAML
│
▼
刪除 DM Deployment(--delete-policy=ABANDON)
保留既有資源,改用 Terraform / Infra Manager 管理
--delete-policy=ABANDON是遷移的關鍵——刪除 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 最佳實踐
State 管理
# 永遠使用 Remote Backend
terraform {
backend "gcs" {
bucket = "my-terraform-state"
prefix = "env/prod"
}
}
- 永遠使用 Remote Backend(GCS),不要用本地 State
- 啟用 State Locking(GCS 自動支援)
- 分環境儲存:
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 等。
總結
GCP 的 IaC 生態系核心要點:
- Terraform:首選 IaC 工具,HCL 語法,State 存 GCS,Plan/Apply 工作流
- Infrastructure Manager:託管 Terraform,免費,自動管理 State
- Config Connector:K8s 原生,用 YAML 管理 GCP 資源
- Fabric FAST:企業 Landing Zone 框架
- Helm:GKE 應用套件管理
- Deployment Manager:已棄用,用 DM Convert 遷移
考試重點:Terraform State 管理、Plan/Apply 工作流、Config Connector 定位、DM 已棄用
下一課 GCP-115:Cloud Memorystore 入門,來看看 GCP 的全託管記憶體資料庫服務。