Última revisión: mayo de 2026
Crea los servicios de AWS del examen PCA con Terraform puro: bloque a bloque, cada uno vinculado a un dominio del examen. El mismo código funciona en OpenTofu.
Al final de este laboratorio, habrá aprovisionado, con Terraform simple, una arquitectura de referencia de PCA de cinco bloques: una VPC personalizada con una subred regional y Cloud NAT para salida de solo egreso, un clúster GKE Autopilot como entorno de ejecución de la carga de trabajo, una instancia de Cloud SQL Postgres solo con IP privada (accesible desde GKE a través de emparejamiento de VPC) y un bucket de aplicaciones de Cloud Storage. Esta es la forma desde la que parte cada escenario de examen de PCA.
Coloque los fragmentos en un único main.tf, ejecute terraform init, luego terraform apply paso a paso.
>= 1.5 o OpenTofu >= 1.6.your-project-id en el bloque del proveedor.terraform apply: gcloud container clusters get-credentials certlabpro-pca-cluster --region us-central1.Se facturan tres elementos mientras están inactivos:
db-f1-micro más pequeño y económico, pero está siendo desaprobado; el examen de PCA ahora hace referencia a los SKU db-perf-optimized-N.~$125/mes con todo aprovisionado. Destruya rápidamente después de la sesión de laboratorio — este es el laboratorio más caro del conjunto de GCP.
Habilite las API de Compute, GKE, Cloud SQL, Service Networking (para IP privada de Cloud SQL) y 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
}Patrón recomendado por PCA: las VM/pods privados no tienen IP externas, pero aún necesitan alcanzar dependencias externas (llamadas a pip / docker / API). La respuesta es Cloud NAT — un servicio NAT regional gestionado que proporciona egreso de solo salida a los recursos privados.
Creamos una subred /20 con dos rangos secundarios para GKE (pods + servicios), aprovisionamos un Cloud Router y le adjuntamos 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 es el modo GKE recomendado por PCA — Google gestiona el grupo de nodos, usted paga por vCPU/memoria de pod consumida. Compare con GKE Standard donde usted mismo dimensiona y paga por el grupo de nodos. El examen de PCA evalúa esta disyuntiva Autopilot vs. Standard como la forma recurrente gestionado vs. control.
Habilitamos VPC-nativa (IPs alias — los pods obtienen IPs del rango secundario en el Paso 2, no de NAT), clúster privado (las IPs de los nodos son privadas; el plano de control también obtiene un endpoint privado) e Identidad de Carga de Trabajo (el patrón recomendado por PCA para la autenticación de pod → GCP-API — sin credenciales de cuenta de servicio a nivel de nodo).
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]
}Conectividad de base de datos recomendada por PCA: IP privada a través de emparejamiento de VPC — Cloud SQL se aprovisiona dentro de una VPC gestionada por Google que se empareja con la suya, la instancia obtiene una IP privada y los pods la alcanzan a través de la red privada. Cloud SQL con IP pública es el antipatrón que se evalúa en el examen de PCA.
La forma: (1) asigne un /16 de su VPC para que lo use Service Networking, (2) empareje la VPC con servicenetworking.googleapis.com, (3) aprovisione la instancia de Cloud SQL con ipv4_enabled = false + la referencia de red emparejada.
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,
]
}Las arquitecturas de referencia de PCA siempre incluyen un bucket de Cloud Storage para algo — cargas, exportaciones, datos de características de ML, activos web estáticos. Añadimos uno aquí, con acceso uniforme a nivel de bucket activado, ciclo de vida que mueve los datos a Nearline después de 30 días.
Con los cinco bloques en su lugar (VPC + NAT, GKE Autopilot, Cloud SQL con IP privada, bucket de GCS), la forma de referencia de PCA está completa: las cargas de trabajo se ejecutan en GKE, se comunican con Postgres a través de redes privadas, escriben artefactos en GCS, y egresan a través de 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 desmonta todo. El clúster GKE se destruye limpiamente (la tarifa del clúster se detiene inmediatamente, ahorrando ~$74/mes). La instancia de Cloud SQL se destruye (deletion_protection = false solo para laboratorio, ahorrando ~$50/mes). El Cloud NAT + router se desvinculan; el rango de emparejamiento de VPC se libera. El bucket de GCS se destruye (force_destroy = true).
PCA cubre muchas superficies a nivel de arquitectura que este laboratorio no puede abarcar — Cloud Load Balancing (balanceador de carga HTTP(S) global con Cloud CDN + Cloud Armor delante de GKE), Cloud Identity-Aware Proxy (IAP) para autenticación a nivel de aplicación, Cloud Run + Cloud Functions para niveles de aplicación sin servidor, Cloud Pub/Sub para mensajería asíncrona, Cloud Tasks / Cloud Scheduler, Memorystore (Redis / Memcached) para almacenamiento en caché, Cloud Spanner / Bigtable / Firestore para alternativas de nivel de datos, Cloud Composer / Workflows para orquestación, BigQuery para análisis, Vertex AI para ML, Cloud DNS / Cloud Domains, Cloud KMS para cifrado CMK ([[gcp-pcse]]), Cloud Interconnect / VPN para híbrido, Anthos para multinube, Cloud Asset Inventory + Cloud Asset Service, jerarquía de Resource Manager (carpetas + organizaciones), Cloud Operations Suite (registro + monitoreo + APM + perfilado + rastreo).
Nos ceñimos a las primitivas VPC + Cloud NAT + GKE + Cloud SQL + GCS porque son la columna vertebral de la arquitectura de referencia de PCA — cualquier otro servicio de GCP se conecta a esta base. Spanner / Bigtable sustituyen a Cloud SQL. Cloud Run sustituye a GKE para aplicaciones sin servidor. Pub/Sub añade mensajería asíncrona entre pods de GKE. La forma permanece.
Para una cobertura conceptual servicio por servicio, consulte las secciones Buscar, Manual y Editorial de esta página de certificación.