अंतिम समीक्षा: मई 2026
साधारण Terraform के साथ PCD परीक्षा के AWS संसाधनों को बनाएं — एक समय में एक ब्लॉक, प्रत्येक परीक्षा डोमेन से जुड़ा हुआ। यही कोड OpenTofu पर भी काम करता है।
इस लैब के अंत तक, आप सादे टेराफॉर्म के साथ सबसे छोटा यथार्थवादी पीसीडी इवेंट-ड्रिवेन ऐप सबस्ट्रेट प्रदान कर चुके होंगे — आपकी कंटेनर छवियों को होस्ट करने के लिए एक आर्टिफैक्ट रजिस्ट्री डॉकर रेपो, एक पब/सब टॉपिक + सब्सक्रिप्शन एक एसिंक मैसेजिंग बैकबोन के रूप में, एक प्लेसहोल्डर इमेज चला रहा एक क्लाउड रन सेवा, और ऐप रहस्यों के लिए सीक्रेट मैनेजर। पाँच ब्लॉक; हर पीसीडी परीक्षा परिदृश्य इस आधार पर आधारित होता है।
स्निपेट्स को एक ही main.tf में डालें, terraform init चलाएं, फिर terraform apply को चरण-दर-चरण चलाएं।
>= 1.5 या ओपनटोफू >= 1.6।your-project-id को बदलें।लैब के दायरे में सभी निःशुल्क या लगभग निःशुल्क हैं:
min_instances = 0 के साथ एक सेवा प्रदान करती है — कोई निष्क्रिय लागत नहीं।लैब वॉल्यूम पर ~$0/माह। min_instances = 0 के साथ क्लाउड रन पीसीडी-अनुशंसित डिफ़ॉल्ट है — कोई निष्क्रिय बिलिंग नहीं।
क्लाउड रन, आर्टिफैक्ट रजिस्ट्री, पब/सब और सीक्रेट मैनेजर एपीआई सक्षम करें।
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-pcd"
managed_by = "terraform"
}
}
resource "google_project_service" "run" {
service = "run.googleapis.com"
disable_on_destroy = false
}
resource "google_project_service" "artifactregistry" {
service = "artifactregistry.googleapis.com"
disable_on_destroy = false
}
resource "google_project_service" "pubsub" {
service = "pubsub.googleapis.com"
disable_on_destroy = false
}
resource "google_project_service" "secretmanager" {
service = "secretmanager.googleapis.com"
disable_on_destroy = false
}आर्टिफैक्ट रजिस्ट्री जीसीपी की कंटेनर + पैकेज रजिस्ट्री है — अप्रचलित कंटेनर रजिस्ट्री (gcr.io) का आधुनिक प्रतिस्थापन। पीसीडी परीक्षा इस आर्टिफैक्ट रजिस्ट्री में पुश → आर्टिफैक्ट रजिस्ट्री से डिप्लॉय पैटर्न को कैनोनिकल CI/CD आकार के रूप में परखती है।
हम एक क्षेत्रीय डॉकर-फॉर्मेट रिपॉजिटरी बनाते हैं। terraform apply के बाद इसे पुश करें:
gcloud auth configure-docker us-central1-docker.pkg.dev
docker tag my-app:latest us-central1-docker.pkg.dev/$PROJECT/certlabpro-pcd-images/my-app:latest
docker push us-central1-docker.pkg.dev/$PROJECT/certlabpro-pcd-images/my-app:latest
resource "google_artifact_registry_repository" "images" {
repository_id = "certlabpro-pcd-images"
location = "us-central1"
format = "DOCKER"
description = "PCD lab Docker images"
labels = local.labels
depends_on = [google_project_service.artifactregistry]
}पब/सब जीसीपी की प्रबंधित मैसेजिंग है — हर पीसीडी-पैटर्न इवेंट-ड्रिवेन ऐप की नींव। टॉपिक्स पब्लिश-टारगेट होते हैं; सब्सक्रिप्शन उपभोक्ता एंडपॉइंट (पुल या पुश) होते हैं। पीसीडी परीक्षा लोड-बियरिंग सिमेंटिक्स के रूप में कम से कम एक बार डिलीवरी + आइडम्पोटेंट उपभोक्ताओं का परीक्षण करती है।
हम बनाते हैं:
orders — जहाँ प्रोड्यूसर पब्लिश करते हैं।orders-worker — उपभोक्ता इससे पुल करते हैं। प्रोडक्शन डिप्लॉयमेंट अक्सर क्लाउड रन एंडपॉइंट्स पर पुश सब्सक्रिप्शन का उपयोग करते हैं (पीसीडी-कैनोनिकल इवेंट-ड्रिवेन आकार: पब/सब पुश → क्लाउड रन); हम IAM को सरल रखने के लिए यहां पुल रखते हैं।ack_deadline_seconds = 60 उपभोक्ताओं को स्वीकार करने के लिए 60 सेकंड देता है; यह क्लाउड रन डिफ़ॉल्ट अनुरोध टाइमआउट से अधिक है और एक आवर्ती पीसीडी परीक्षा ट्यूनिंग नॉब है।
resource "google_pubsub_topic" "orders" {
name = "orders"
labels = local.labels
depends_on = [google_project_service.pubsub]
}
resource "google_pubsub_subscription" "orders_worker" {
name = "orders-worker"
topic = google_pubsub_topic.orders.id
ack_deadline_seconds = 60
message_retention_duration = "604800s" # 7 days (max)
retry_policy {
minimum_backoff = "10s"
maximum_backoff = "600s"
}
labels = local.labels
}क्लाउड रन जीसीपी की कंटेनर-एज़-ए-सर्विस है — Google के सर्वरलेस इंफ्रा पर डॉकर कंटेनर चलाता है, शून्य तक स्केल करता है। पीसीडी-अनुशंसित पैटर्न: प्रत्येक क्लाउड रन सेवा अपने स्वयं के सेवा खाते के रूप में चलती है, कभी भी डिफ़ॉल्ट कंप्यूट सेवा खाते के रूप में नहीं।
हम एक सेवा डिप्लॉय करते हैं जो सार्वजनिक hello इमेज को एक प्लेसहोल्डर के रूप में चलाती है, स्टेप 3 से टॉपिक पर roles/pubsub.subscriber के साथ प्रति-सेवा सेवा खाता अटैच करते हैं, और अप्रमाणित एक्सेस के लिए allUsers को roles/run.invoker प्रदान करते हैं। उत्पादन के लिए IAM-गेटेड इन्वोकर पर स्विच करें — पीसीडी परीक्षा इस allUsers ↔ विशिष्ट-पहचान फ्लिप का परीक्षण करती है।
resource "google_service_account" "worker" {
account_id = "certlabpro-pcd-worker"
display_name = "PCD lab Cloud Run worker"
}
resource "google_pubsub_subscription_iam_member" "worker_subscriber" {
subscription = google_pubsub_subscription.orders_worker.name
role = "roles/pubsub.subscriber"
member = "serviceAccount:${google_service_account.worker.email}"
}
resource "google_cloud_run_v2_service" "worker" {
name = "certlabpro-pcd-worker"
location = "us-central1"
template {
service_account = google_service_account.worker.email
scaling {
min_instance_count = 0 # scale-to-zero — no idle billing
max_instance_count = 5
}
containers {
image = "us-docker.pkg.dev/cloudrun/container/hello"
resources {
limits = {
cpu = "1"
memory = "512Mi"
}
}
}
}
labels = local.labels
depends_on = [google_project_service.run]
}
resource "google_cloud_run_v2_service_iam_member" "public_invoker" {
name = google_cloud_run_v2_service.worker.name
location = google_cloud_run_v2_service.worker.location
role = "roles/run.invoker"
member = "allUsers" # lab-only; production = specific identity
}सीक्रेट मैनेजर जीसीपी का सीक्रेट स्टोर है — संस्करणित मान, IAM-नियंत्रित एक्सेस, स्वचालित रोटेशन हुक। पीसीडी-अनुशंसित पैटर्न: ऐप कॉन्फ़िग जो सीक्रेट नहीं है, वह env vars में जाता है; ऐप कॉन्फ़िग जो सीक्रेट है (API कुंजियाँ, DB पासवर्ड, OAuth टोकन), वह सीक्रेट मैनेजर में जाता है, जिसे क्लाउड रन सेवा द्वारा संदर्भित किया जाता है।
हम एक सीक्रेट + प्रारंभिक संस्करण बनाते हैं, फिर स्टेप 4 से क्लाउड रन सेवा खाते को उस पर roles/secretmanager.secretAccessor प्रदान करते हैं। सीक्रेट को क्लाउड रन में एक env var के रूप में जोड़ने के लिए, आप सेवा टेम्पलेट में एक env { name = "..."; value_source { secret_key_ref { ... } } } ब्लॉक जोड़ेंगे (इस स्टेप को केंद्रित रखने के लिए जानबूझकर छोड़ा गया है)।
resource "google_secret_manager_secret" "db_password" {
secret_id = "certlabpro-pcd-db-password"
replication {
auto {}
}
labels = local.labels
depends_on = [google_project_service.secretmanager]
}
resource "google_secret_manager_secret_version" "db_password_v1" {
secret = google_secret_manager_secret.db_password.id
secret_data = "lab-placeholder-rotate-me"
}
resource "google_secret_manager_secret_iam_member" "worker_reader" {
secret_id = google_secret_manager_secret.db_password.id
role = "roles/secretmanager.secretAccessor"
member = "serviceAccount:${google_service_account.worker.email}"
}terraform destroy सब कुछ हटा देता है। क्लाउड रन सेवा नष्ट हो जाती है (min_instances = 0 के साथ इसकी पहले से कोई लागत नहीं थी)। आर्टिफैक्ट रजिस्ट्री रेपो नष्ट हो जाता है (क्योंकि लैब कोई इमेज पुश नहीं करती है, force_destroy निहित है)। पब/सब + सीक्रेट मैनेजर संसाधन साफ तरीके से नष्ट हो जाते हैं।
पीसीडी कई जीसीपी ऐप-डेवलपर सतहों को कवर करता है जिन्हें यह लैब शामिल नहीं कर सकती — क्लाउड फंक्शन्स (क्लाउड रन का पुराना/हल्का विकल्प), क्लाउड टास्क (टिकाऊ एसिंक क्यू), क्लाउड शेड्यूलर (क्रॉन-एज़-ए-सर्विस), क्लाउड एंडपॉइंट्स / एपीआई गेटवे (क्लाउड रन के सामने प्रबंधित एपीआई सतह), क्लाउड ट्रेस + क्लाउड प्रोफाइलर + क्लाउड डिबगर (ऐप-प्रदर्शन टेलीमेट्री — [[gcp-pcde]] टियर), फायरबेस (मोबाइल/वेब ऐप प्लेटफॉर्म), क्लाउड स्टोरेज (एसपीए के लिए स्टैटिक एसेट होस्टिंग के रूप में उपयोग किया जाता है), क्लाउड बिल्ड (सीआई/सीडी — [[gcp-pcde]]), क्लाउड डिप्लॉय (सीडी — [[gcp-pcde]]), इवेंटआर्क (जीसीपी सेवाओं से क्लाउड रन / फंक्शन्स तक इवेंट राउटर), वर्कफ़्लो (ऑर्केस्ट्रेशन), फायरस्टोर (ऐप्स के लिए नोएसक्यूएल डीबी), मेमोरेस्टोर (रेडिस), इन-ऐप जेनएआई के लिए वर्टेक्स एआई, और पूरा ऐप इंजन उत्पाद (विरासत में मिला लेकिन अभी भी पीसीडी परीक्षा ब्लूप्रिंट पर)।
हम आर्टिफैक्ट रजिस्ट्री + पब/सब + क्लाउड रन + सीक्रेट मैनेजर प्रिमिटिव्स पर टिके रहते हैं क्योंकि वे पीसीडी-कैनोनिकल इवेंट-ड्रिवेन ऐप स्पाइन हैं। क्लाउड फंक्शन्स + क्लाउड रन समान आर्टिफैक्ट रजिस्ट्री इमेज सबस्ट्रेट साझा करते हैं। इवेंटआर्क क्लाउड रन / फंक्शन्स में इवेंट्स को रूट करता है। क्लाउड टास्क पब/सब का सिंक्रोनस-आरपीसी वेरिएंट है। सबस्ट्रेट में महारत हासिल करें; विकल्प इसमें फिट हो जाते हैं।
सेवा-दर-सेवा वैचारिक कवरेज के लिए, इस प्रमाणपत्र पृष्ठ के ब्राउज़, मार्गदर्शिका, और Editorial अनुभाग देखें।