Dernière révision : mai 2026
Configurez les services AWS figurant à l'examen PCA avec Terraform simple — un bloc à la fois, chacun étant lié à un domaine de l'examen. Le même code fonctionne sur OpenTofu.
À la fin de ce lab, vous aurez provisionné, avec du Terraform simple, une architecture de référence PCA en cinq blocs — un VPC personnalisé avec un sous-réseau régional et Cloud NAT pour un trafic sortant uniquement, un cluster GKE Autopilot comme environnement d'exécution des charges de travail, une instance Cloud SQL Postgres avec uniquement une IP privée (accessible depuis GKE via le peering VPC), et un bucket d'application Cloud Storage. C'est la forme de départ de tout scénario d'examen PCA.
Déposez les extraits dans un unique main.tf, exécutez terraform init, puis terraform apply étape par étape.
>= 1.5 ou OpenTofu >= 1.6.your-project-id dans le bloc du fournisseur.terraform apply : gcloud container clusters get-credentials certlabpro-pca-cluster --region us-central1.Trois éléments de coût facturés à l'arrêt :
db-f1-micro plus petit et moins cher existe mais est en cours d'abandon ; l'examen PCA fait désormais référence aux SKU db-perf-optimized-N.~125 $/mois avec tout provisionné. Détruisez rapidement après la session de lab — c'est le lab le plus cher de l'ensemble GCP.
Activez les API Compute, GKE, Cloud SQL, Service Networking (pour l'IP privée de Cloud SQL) et Cloud Storage.
terraform {
required_version = ">= 1.5"
required_providers {
google = { source = "hashicorp/google", version = "~> 6.0" }
}
}
provider "google" {
project = "your-project-id" # REPLACE
region = "us-central1"
}
locals {
labels = {
project = "certlabpro-pca"
managed_by = "terraform"
}
}
resource "google_project_service" "compute" {
service = "compute.googleapis.com"
disable_on_destroy = false
}
resource "google_project_service" "container" {
service = "container.googleapis.com"
disable_on_destroy = false
}
resource "google_project_service" "sqladmin" {
service = "sqladmin.googleapis.com"
disable_on_destroy = false
}
resource "google_project_service" "servicenetworking" {
service = "servicenetworking.googleapis.com"
disable_on_destroy = false
}
resource "google_project_service" "storage" {
service = "storage.googleapis.com"
disable_on_destroy = false
}Modèle recommandé par le PCA : les VM/pods privés n'ont pas d'IP externes, mais doivent néanmoins atteindre des dépendances externes (appels pip / docker / API). La solution est Cloud NAT — un service NAT régional géré qui fournit aux ressources privées un trafic sortant uniquement.
Nous découpons un sous-réseau /20 avec deux plages secondaires pour GKE (pods + services), provisionnons un Cloud Router et y attachons un Cloud NAT.
resource "google_compute_network" "main" {
name = "certlabpro-pca-vpc"
auto_create_subnetworks = false
depends_on = [google_project_service.compute]
}
resource "google_compute_subnetwork" "main" {
name = "certlabpro-pca-subnet"
ip_cidr_range = "10.10.0.0/20"
region = "us-central1"
network = google_compute_network.main.id
private_ip_google_access = true
secondary_ip_range {
range_name = "pods"
ip_cidr_range = "10.20.0.0/14"
}
secondary_ip_range {
range_name = "services"
ip_cidr_range = "10.24.0.0/20"
}
}
resource "google_compute_router" "nat_router" {
name = "certlabpro-pca-router"
region = "us-central1"
network = google_compute_network.main.id
}
resource "google_compute_router_nat" "nat" {
name = "certlabpro-pca-nat"
router = google_compute_router.nat_router.name
region = "us-central1"
nat_ip_allocate_option = "AUTO_ONLY"
source_subnetwork_ip_ranges_to_nat = "ALL_SUBNETWORKS_ALL_IP_RANGES"
log_config {
enable = true
filter = "ERRORS_ONLY"
}
}GKE Autopilot est le mode GKE recommandé par le PCA — Google gère le pool de nœuds, vous payez par vCPU de pod / mémoire de pod consommée. Comparez à GKE Standard où vous dimensionnez et payez vous-même le pool de nœuds. L'examen PCA teste ce compromis Autopilot-vs-Standard comme la forme récurrente géré-vs-contrôle.
Nous activons le VPC-natif (alias IP — les pods obtiennent des IP de la plage secondaire de l'étape 2, et non de NAT), le cluster privé (les IP des nœuds sont privées ; le plan de contrôle obtient également un point de terminaison privé), et Workload Identity (le modèle recommandé par le PCA pour l'authentification pod → GCP-API — sans identifiants de compte de service au niveau des nœuds).
resource "google_container_cluster" "main" {
name = "certlabpro-pca-cluster"
location = "us-central1" # regional Autopilot
enable_autopilot = true
network = google_compute_network.main.id
subnetwork = google_compute_subnetwork.main.id
ip_allocation_policy {
cluster_secondary_range_name = "pods"
services_secondary_range_name = "services"
}
private_cluster_config {
enable_private_nodes = true
enable_private_endpoint = false # public control plane for kubectl access
master_ipv4_cidr_block = "172.16.0.0/28"
}
deletion_protection = false # lab-only
depends_on = [google_project_service.container]
}Connectivité de base de données recommandée par le PCA : IP privée via peering VPC — Cloud SQL est provisionné dans un VPC géré par Google qui est en peering avec le vôtre, l'instance obtient une IP privée, et les pods y accèdent via le réseau privé. Cloud SQL avec IP publique est l'anti-pattern testé par l'examen PCA.
La forme : (1) allouer un /16 depuis votre VPC pour que Service Networking l'utilise, (2) peer le VPC avec servicenetworking.googleapis.com, (3) provisionner l'instance Cloud SQL avec ipv4_enabled = false + la référence du réseau en peering.
resource "google_compute_global_address" "private_ip_alloc" {
name = "certlabpro-pca-sql-peer"
purpose = "VPC_PEERING"
address_type = "INTERNAL"
prefix_length = 16
network = google_compute_network.main.id
}
resource "google_service_networking_connection" "sql_peering" {
network = google_compute_network.main.id
service = "servicenetworking.googleapis.com"
reserved_peering_ranges = [google_compute_global_address.private_ip_alloc.name]
depends_on = [google_project_service.servicenetworking]
}
resource "google_sql_database_instance" "main" {
name = "certlabpro-pca-pg"
database_version = "POSTGRES_15"
region = "us-central1"
settings {
tier = "db-perf-optimized-N-2"
availability_type = "ZONAL" # lab-only; production = REGIONAL
ip_configuration {
ipv4_enabled = false
private_network = google_compute_network.main.id
}
backup_configuration {
enabled = true
point_in_time_recovery_enabled = true
}
}
deletion_protection = false # lab-only
depends_on = [
google_service_networking_connection.sql_peering,
google_project_service.sqladmin,
]
}Les architectures de référence PCA incluent toujours un bucket Cloud Storage pour quelque chose — téléchargements, exportations, données de fonctionnalités ML, actifs web statiques. Nous en ajoutons un ici, avec accès uniforme au niveau du bucket activé, et un cycle de vie déplaçant les données vers Nearline après 30 jours.
Avec les cinq blocs en place (VPC + NAT, GKE Autopilot, Cloud SQL avec IP privée, bucket GCS), la forme de référence PCA est complète : les charges de travail s'exécutent sur GKE, communiquent avec Postgres via le réseau privé, écrivent des artefacts dans GCS, et sortent via Cloud NAT.
resource "random_id" "suffix" {
byte_length = 4
}
resource "google_storage_bucket" "app" {
name = "certlabpro-pca-app-${random_id.suffix.hex}"
location = "US"
uniform_bucket_level_access = true
force_destroy = true # lab-only
lifecycle_rule {
condition {
age = 30
}
action {
type = "SetStorageClass"
storage_class = "NEARLINE"
}
}
labels = local.labels
depends_on = [google_project_service.storage]
}terraform destroy supprime tout. Le cluster GKE est détruit proprement (les frais de cluster s'arrêtent immédiatement, soit ~74 $/mois économisés). L'instance Cloud SQL est détruite (deletion_protection = false pour le lab uniquement, soit ~50 $/mois économisés). Le Cloud NAT + routeur se détache ; la plage de peering VPC est libérée. Le bucket GCS est détruit (force_destroy = true).
Le PCA couvre de nombreuses surfaces d'architecture que ce lab ne peut pas intégrer — Cloud Load Balancing (équilibreur de charge HTTP(S) global avec Cloud CDN + Cloud Armor devant GKE), Cloud Identity-Aware Proxy (IAP) pour l'authentification au niveau de l'application, Cloud Run + Cloud Functions pour les niveaux d'application sans serveur, Cloud Pub/Sub pour la messagerie asynchrone, Cloud Tasks / Cloud Scheduler, Memorystore (Redis / Memcached) pour la mise en cache, Cloud Spanner / Bigtable / Firestore pour les alternatives de niveau de données, Cloud Composer / Workflows pour l'orchestration, BigQuery pour l'analyse, Vertex AI pour le ML, Cloud DNS / Cloud Domains, Cloud KMS pour le chiffrement CMK ([[gcp-pcse]]), Cloud Interconnect / VPN pour l'hybride, Anthos pour le multi-cloud, Cloud Asset Inventory + Cloud Asset Service, hiérarchie Resource Manager (dossiers + organisations), Cloud Operations Suite (journalisation + surveillance + APM + profilage + traçage).
Nous nous en tenons aux primitives VPC + Cloud NAT + GKE + Cloud SQL + GCS car elles constituent la colonne vertébrale de l'architecture de référence PCA — tous les autres services GCP se branchent sur cette base. Spanner / Bigtable remplacent Cloud SQL. Cloud Run remplace GKE pour les applications sans serveur. Pub/Sub ajoute la messagerie asynchrone entre les pods GKE. La forme reste.
Pour une couverture conceptuelle service par service, consultez les sections Parcourir, Guide et Editorial de cette page de certification.