Zuletzt überprüft: Mai 2026
Erstellen Sie die AWS-Dienste der PCA-Prüfung mit reinem Terraform — ein Block nach dem anderen, jeweils abgestimmt auf eine Prüfungsdomäne. Derselbe Code funktioniert auch mit OpenTofu.
Am Ende dieses Labs haben Sie mit reinem Terraform eine fünfteilige PCA-Referenzarchitektur bereitgestellt – eine benutzerdefinierte VPC mit einem regionalen Subnetz und Cloud NAT für ausschließlich ausgehenden Datenverkehr, einen GKE Autopilot-Cluster als Workload-Laufzeitumgebung, eine Cloud SQL Postgres-Instanz nur mit privater IP (erreichbar von GKE über VPC-Peering) und einen Cloud Storage-Anwendungsbucket. Dies ist die Grundstruktur, von der jedes PCA-Prüfungsszenario ausgeht.
Fügen Sie die Snippets in eine einzige main.tf ein, führen Sie terraform init aus und anschließend terraform apply Schritt für Schritt.
>= 1.5 oder OpenTofu >= 1.6.your-project-id im Provider-Block.terraform apply mit dem GKE-Cluster interagieren möchten: gcloud container clusters get-credentials certlabpro-pca-cluster --region us-central1.Drei Posten werden im Leerlauf berechnet:
db-f1-micro-Stufe existiert, wird aber eingestellt; die PCA-Prüfung bezieht sich jetzt auf db-perf-optimized-N SKUs.~125 $/Monat bei allem bereitgestellten. Nach der Laborsitzung umgehend zerstören – dies ist das teuerste Lab im GCP-Set.
Aktivieren Sie die APIs für Compute, GKE, Cloud SQL, Service Networking (für die private IP von Cloud SQL) und 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
}Von der PCA empfohlenes Muster: Private VMs/Pods haben keine externen IPs, müssen aber dennoch externe Abhängigkeiten erreichen können (pip / docker / API-Aufrufe). Die Antwort ist Cloud NAT – ein verwalteter regionaler NAT-Dienst, der privaten Ressourcen ausschließlich ausgehenden Datenverkehr ermöglicht.
Wir erstellen ein /20-Subnetz mit zwei sekundären Bereichen für GKE (Pods + Dienste), stellen einen Cloud Router bereit und fügen eine Cloud NAT daran an.
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 ist der von der PCA empfohlene GKE-Modus – Google verwaltet den Knotenpool, Sie zahlen pro genutzter Pod-vCPU / Pod-Arbeitsspeicher. Vergleichen Sie dies mit GKE Standard, wo Sie den Knotenpool selbst dimensionieren und bezahlen. Die PCA-Prüfung testet diesen Autopilot-vs-Standard-Kompromiss als wiederkehrendes managed-vs-control-Schema.
Wir aktivieren VPC-native (Alias-IPs – die Pods erhalten IPs aus dem sekundären Bereich in Schritt 2, nicht von NAT), private cluster (Knoten-IPs sind privat; die Steuerungsebene erhält ebenfalls einen privaten Endpunkt) und Workload Identity (das von der PCA empfohlene Muster für die Pod → GCP-API-Authentifizierung – keine Dienstkonten-Anmeldeinformationen auf Knotenebene).
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]
}Von der PCA empfohlene Datenbankkonnektivität: private IP über VPC-Peering – Cloud SQL wird in einer von Google verwalteten VPC bereitgestellt, die mit Ihrer VPC verbunden ist. Die Instanz erhält eine private IP, und Pods erreichen sie über private Netzwerke. Cloud SQL mit öffentlicher IP ist das Anti-Muster, das in der PCA-Prüfung abgefragt wird.
Die Struktur: (1) weisen Sie einen /16-Block aus Ihrer VPC zu, den Service Networking verwenden kann, (2) verbinden Sie die VPC über Peering mit servicenetworking.googleapis.com, (3) stellen Sie die Cloud SQL-Instanz mit ipv4_enabled = false + der Referenz des gepeerten Netzwerks bereit.
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,
]
}PCA-Referenzarchitekturen enthalten immer einen Cloud Storage-Bucket für irgendetwas – Uploads, Exporte, ML-Feature-Daten, statische Web-Assets. Wir fügen hier einen hinzu, mit aktivierter einheitlicher Bucket-Zugriffssteuerung, wobei der Lebenszyklus Daten nach 30 Tagen nach Nearline verschiebt.
Mit den fünf Blöcken (VPC + NAT, Autopilot GKE, Cloud SQL mit privater IP, GCS-Bucket) ist die PCA-Referenzstruktur vollständig: Workloads laufen auf GKE, kommunizieren mit Postgres über private Netzwerke, schreiben Artefakte in GCS, und der ausgehende Verkehr erfolgt über 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 reißt alles ab. Der GKE-Cluster wird sauber zerstört (die Cluster-Gebühr stoppt sofort, ~74 $/Monat gespart). Die Cloud SQL-Instanz wird zerstört (nur für Labore deletion_protection = false, ~50 $/Monat gespart). Der Cloud NAT + Router werden getrennt; der VPC-Peering-Bereich wird freigegeben. Der GCS-Bucket wird zerstört (force_destroy = true).
Die PCA deckt viele Architekturebenen ab, die dieses Lab nicht behandeln kann – Cloud Load Balancing (globaler HTTP(S)-LB mit Cloud CDN + Cloud Armor vor GKE), Cloud Identity-Aware Proxy (IAP) für die Authentifizierung auf Anwendungsebene, Cloud Run + Cloud Functions für serverlose Anwendungsebenen, Cloud Pub/Sub für asynchrone Nachrichtenübermittlung, Cloud Tasks / Cloud Scheduler, Memorystore (Redis / Memcached) für Caching, Cloud Spanner / Bigtable / Firestore für Daten-Tier-Alternativen, Cloud Composer / Workflows für Orchestrierung, BigQuery für Analysen, Vertex AI für ML, Cloud DNS / Cloud Domains, Cloud KMS für CMK-Verschlüsselung ([[gcp-pcse]]), Cloud Interconnect / VPN für Hybrid-Cloud, Anthos für Multi-Cloud, Cloud Asset Inventory + Cloud Asset Service, Resource Manager Hierarchie (Ordner + Organisationen), Cloud Operations Suite (Logging + Monitoring + APM + Profiling + Tracing).
Wir halten uns an die Primitive VPC + Cloud NAT + GKE + Cloud SQL + GCS, da sie das Rückgrat der PCA-Referenzarchitektur bilden – jeder andere GCP-Dienst wird an diese Basis angeschlossen. Spanner / Bigtable ersetzen Cloud SQL. Cloud Run ersetzt GKE für serverlose Anwendungen. Pub/Sub fügt asynchrone Nachrichtenübermittlung zwischen GKE-Pods hinzu. Die Struktur bleibt erhalten.
Für eine konzeptionelle Abdeckung Dienst für Dienst siehe die Abschnitte Durchsuchen, Handbuch und Editorial dieser Zertifizierungsseite.