Последняя проверка: май 2026 г.
Разверните сервисы AWS для экзамена PCA с помощью чистого Terraform: пошаговое руководство с привязкой каждого блока к разделам экзамена. Код также совместим с OpenTofu.
К концу этой лабораторной работы вы развернете с помощью чистого Terraform пятиблочную эталонную архитектуру PCA — пользовательский VPC с региональной подсетью и Cloud NAT для только исходящего трафика, кластер GKE Autopilot как среду выполнения рабочих нагрузок, экземпляр Cloud SQL Postgres только с приватным IP (доступный из GKE через пиринг VPC) и корзину Cloud Storage для приложения. Это форма, с которой начинается каждый сценарий экзамена 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 схема: приватные ВМ / поды не имеют внешних IP-адресов, но все равно нуждаются в доступе к внешним зависимостям (pip / docker / вызовы API). Решением является Cloud NAT — управляемый региональный сервис NAT, который обеспечивает частным ресурсам только исходящий трафик.
Мы выделяем подсеть /20 с двумя дополнительными диапазонами для GKE (поды + сервисы), развертываем 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 — это рекомендуемый PCA режим GKE — Google управляет пулом узлов, вы платите за потребляемые vCPU/память пода. Сравните с GKE Standard, где вы сами определяете размер и оплачиваете пул узлов. Экзамен PCA проверяет этот компромисс между Autopilot и Standard как повторяющуюся модель управляемого vs. контролируемого.
Мы включаем VPC-нативный (псевдонимы IP — поды получают IP-адреса из вторичного диапазона на Шаге 2, а не от NAT), частный кластер (IP-адреса узлов частные; панель управления также получает частную конечную точку) и Workload Identity (рекомендуемая PCA схема для аутентификации под → 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 — Cloud SQL развертывается внутри управляемого Google VPC, который устанавливает пиринг с вашим, экземпляр получает приватный IP, и поды достигают его по приватной сети. Cloud SQL с публичным IP — это антишаблон, который проверяется на экзамене PCA.
Схема: (1) выделите /16 из вашего VPC для использования Service Networking, (2) установите пиринг VPC с servicenetworking.googleapis.com, (3) разверните экземпляр Cloud SQL с ipv4_enabled = false + ссылкой на пиринговую сеть.
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 для чего-либо — загрузок, экспорта, данных функций ML, статических веб-ресурсов. Мы добавляем ее сюда: с унифицированным доступом на уровне корзины, с правилом жизненного цикла, перемещающим данные в Nearline через 30 дней.
С пятью блоками на месте (VPC + NAT, Autopilot GKE, Cloud SQL с приватным IP, корзина GCS) эталонная схема 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 освобождается. Корзина GCS удаляется (force_destroy = true).
PCA охватывает множество поверхностей архитектурного уровня, которые не могут быть представлены в этой лабораторной работе — Cloud Load Balancing (глобальный 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 добавляет асинхронный обмен сообщениями между подами GKE. Форма остается прежней.
Концептуальное описание каждого сервиса см. в разделах Просмотр, Справочник и Editorial на этой странице сертификации.