נבדק לאחרונה: מאי 2026
בנו את שירותי AWS של בחינת PCA עם Terraform פשוט — בלוק אחד בכל פעם, כאשר כל אחד מהם מקושר בחזרה לתחום במבחן. אותו הקוד עובד גם ב-OpenTofu.
עד סוף מעבדה זו תגדיר, באמצעות Terraform פשוט, ארכיטקטורת ייחוס של PCA בחמישה בלוקים — VPC מותאם אישית עם תת-רשת אזורית ו-Cloud NAT ליציאה בלבד, אשכול GKE Autopilot כסביבת זמן הריצה של העומס, מופע Cloud SQL Postgres עם IP פרטי בלבד (ניתן להגעה מ-GKE באמצעות VPC peering), ו-Cloud Storage app bucket. זוהי הצורה שממנה מתחיל כל תרחיש בחינה של PCA.
השלך את המקטעים לקובץ main.tf יחיד, הפעל terraform init, ולאחר מכן terraform apply צעד אחר צעד.
>= 1.5 או OpenTofu >= 1.6.your-project-id בבלוק הספק.terraform apply: gcloud container clusters get-credentials certlabpro-pca-cluster --region us-central1.שלושה פריטים יחויבו בזמן סרק:
db-f1-micro קטנה יותר וזולה יותר, אך היא נגנזת; בחינת PCA מתייחסת כעת ליחידות SKU של db-perf-optimized-N.כ-125$/חודש עם הכל מוגדר. יש להרוס מייד לאחר סיום המעבדה — זוהי המעבדה היקרה ביותר במערכת ה-GCP.
אפשר את ממשקי ה-API של Compute, GKE, Cloud SQL, Service Networking (עבור IP פרטי של Cloud SQL), ו-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
}תבנית מומלצת על ידי PCA: ל-VMs / pods פרטיים אין כתובות IP חיצוניות, אך הם עדיין צריכים להגיע לתלויות חיצוניות (pip / docker / קריאות API). הפתרון הוא Cloud NAT — שירות NAT אזורי מנוהל המספק למשאבים פרטיים יציאה בלבד.
אנו יוצרים תת-רשת /20 עם שני טווחים משניים עבור GKE (pods + services), מגדירים Cloud Router, ומצרפים אליו 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 הוא מצב ה-GKE המומלץ על ידי PCA — גוגל מנהלת את מאגר הצמתים, ואתה משלם לפי vCPU/זיכרון של pod שנצרך. השווה ל-GKE Standard שבו אתה קובע את גודל מאגר הצמתים ומשלם עליו בעצמך. בחינת PCA בודקת את הוויתור הזה של Autopilot לעומת Standard כדפוס החוזר של מנוהל לעומת שליטה.
אנו מפעילים VPC-native (כתובות IP חלופיות — ה-pods מקבלים כתובות IP מהטווח המשני בשלב 2, לא מ-NAT), אשכול פרטי (כתובות ה-IP של הצמתים פרטיות; למישור הבקרה יש גם נקודת קצה פרטית), ו-Workload Identity (התבנית המומלצת על ידי PCA עבור אימות pod → GCP-API — ללא אישורי חשבון שירות ברמת צומת).
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]
}קישוריות מסד נתונים המומלצת על ידי PCA: IP פרטי באמצעות VPC peering — Cloud SQL מוגדר בתוך VPC מנוהל על ידי גוגל שיוצר peering עם ה-VPC שלך, המופע מקבל IP פרטי, וה-pods מגיעים אליו דרך רשת פרטית. Cloud SQL עם IP ציבורי הוא האנטי-תבנית שבחינת PCA בודקת נגדה.
הצורה: (1) הקצה /16 מה-VPC שלך לשימוש Service Networking, (2) בצע peering ל-VPC עם servicenetworking.googleapis.com, (3) הגדר את מופע Cloud SQL עם ipv4_enabled = false + הפניה לרשת ה-peered.
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 כוללות תמיד Cloud Storage bucket עבור משהו — העלאות, ייצוא, נתוני תכונות ML, נכסי אינטרנט סטטיים. אנו מוסיפים אחד כאן, עם uniform-bucket-level-access מופעל, ומחזור חיים המעביר נתונים ל-Nearline לאחר 30 יום.
עם חמשת הבלוקים במקומם (VPC + NAT, Autopilot GKE, Cloud SQL עם IP פרטי, GCS bucket), צורת הייחוס של PCA הושלמה: עומסי עבודה רצים על GKE, מתקשרים עם Postgres דרך רשת פרטית, כותבים ארטיפקטים ל-GCS, ויוצאים דרך 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 הורס הכל. אשכול ה-GKE נהרס בצורה נקייה (דמי האשכול נפסקות מיידית, חסכון של כ-74$/חודש). מופע ה-Cloud SQL נהרס (deletion_protection = false עבור המעבדה בלבד, חסכון של כ-50$/חודש). Cloud NAT + הנתב מתנתקים; טווח ה-VPC peering מתפנה. ה-GCS bucket נהרס (force_destroy = true).
PCA מכסה רבדים רבים ברמת הארכיטקטורה שהמעבדה הזו אינה יכולה להכיל — Cloud Load Balancing (LB גלובלי של HTTP(S) עם Cloud CDN + Cloud Armor לפני GKE), Cloud Identity-Aware Proxy (IAP) לאימות ברמת האפליקציה, Cloud Run + Cloud Functions לשכבות אפליקציה ללא שרת, Cloud Pub/Sub להעברת הודעות אסינכרונית, Cloud Tasks / Cloud Scheduler, Memorystore (Redis / Memcached) לזיכרון מטמון, Cloud Spanner / Bigtable / Firestore לחלופות שכבת נתונים, Cloud Composer / Workflows לתזמור, BigQuery לניתוח נתונים, Vertex AI ל-ML, Cloud DNS / Cloud Domains, Cloud KMS להצפנת CMK ([[gcp-pcse]]), Cloud Interconnect / VPN לסביבות היברידיות, Anthos לריבוי עננים, Cloud Asset Inventory + Cloud Asset Service, היררכיית Resource Manager (תיקיות + ארגונים), Cloud Operations Suite (רישום יומן + ניטור + APM + פרופיל + מעקב).
אנו נצמדים לפרימיטיבים של VPC + Cloud NAT + GKE + Cloud SQL + GCS מכיוון שהם עמוד השדרה של ארכיטקטורת הייחוס של PCA — כל שירות GCP אחר מתחבר לבסיס זה. Spanner / Bigtable מחליפים את Cloud SQL. Cloud Run מחליף את GKE עבור אפליקציות ללא שרת. Pub/Sub מוסיף העברת הודעות אסינכרונית בין pods של GKE. הצורה נשארת.
לכיסוי קונספטואלי שירות-אחר-שירות, ראה את הקטעים עיון, מדריך ו-Editorial בדף אישור זה.