1. परिचय
Private Service Connect (PSC), Google Cloud नेटवर्किंग की एक सुविधा है. इसकी मदद से, उपभोक्ता अपने वीपीसी नेटवर्क से मैनेज की गई सेवाओं को निजी तौर पर ऐक्सेस कर सकते हैं. पीएससी बैकएंड, पीएससी की सुविधाओं का एक सबसेट है. इससे लोड बैलेंसर, Google की मैनेज की गई ग्लोबल सेवाओं के सामने होता है. जैसे, Google Cloud Storage. इससे लोड बैलेंसिंग के अन्य इंटिग्रेशन लागू किए जा सकते हैं. जैसे, कोई दूसरा FQDN. इस कोडलैब को पब्लिश करते समय, Google की सिर्फ़ कुछ सेवाओं का इस्तेमाल ग्लोबल पीएससी बैकएंड के साथ किया जा सकता है. वह सूची यहां देखी जा सकती है.
इस कोडलैब में, यह बताया गया है कि इंटरनल एफ़क्यूडीएन की मदद से Google Cloud Storage को ऐक्सेस करने के लिए, पीएससी बैकएंड कैसे सेट अप करें.
आपको क्या सीखने को मिलेगा
- बुनियादी वीपीसी नेटवर्किंग इन्फ़्रास्ट्रक्चर डिप्लॉय करना
- Google Cloud Storage में बेसिक बकेट डिप्लॉय करना
- Google Cloud Storage के लिए, पीएससी बैकएंड के साथ क्रॉस-रीजन इंटरनल ऐप्लिकेशन लोड बैलेंसर डिप्लॉय करना
आपको इन चीज़ों की ज़रूरत होगी
- मालिक की अनुमतियों वाला Google Cloud प्रोजेक्ट
- संगठन की ये नीतियां, Google Cloud प्रोजेक्ट में लागू नहीं की जाती हैं: शील्डेड वीएम
2. कोडलैब टोपोलॉजी

इस कोडलैब में, वीपीसी नेटवर्क, सबनेट, निजी डीएनएस ज़ोन, फ़ायरवॉल के नियम, Google Cloud Storage बकेट, सैंपल फ़ाइल, और टेस्ट वीएम डिप्लॉय किए जाएंगे. इसके बाद, Google Cloud Storage के लिए पीएससी बैकएंड के साथ क्रॉस-रीजनल ऐप्लिकेशन लोड बैलेंसर डिप्लॉय करें. आखिर में, Google Cloud Storage बकेट में मौजूद फ़ाइल से कनेक्टिविटी की जांच करें.
3. सेटअप और ज़रूरी शर्तें
अपने हिसाब से एनवायरमेंट सेट अप करना
- Google Cloud Console में साइन इन करें और नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. अगर आपके पास पहले से कोई Gmail या Google Workspace खाता नहीं है, तो आपको एक खाता बनाना होगा.



- प्रोजेक्ट का नाम, इस प्रोजेक्ट में हिस्सा लेने वाले लोगों के लिए डिसप्ले नेम होता है. यह एक वर्ण स्ट्रिंग है, जिसका इस्तेमाल Google API नहीं करते. इसे कभी भी अपडेट किया जा सकता है.
- प्रोजेक्ट आईडी, सभी Google Cloud प्रोजेक्ट के लिए यूनीक होता है. साथ ही, इसे बदला नहीं जा सकता. Cloud Console, यूनीक स्ट्रिंग को अपने-आप जनरेट करता है. आम तौर पर, आपको इससे कोई फ़र्क़ नहीं पड़ता कि यह क्या है. ज़्यादातर कोडलैब में, आपको अपने प्रोजेक्ट आईडी (आम तौर पर
PROJECT_IDके तौर पर पहचाना जाता है) का रेफ़रंस देना होगा. अगर आपको जनरेट किया गया आईडी पसंद नहीं है, तो कोई दूसरा रैंडम आईडी जनरेट किया जा सकता है. इसके अलावा, आपके पास अपना नाम आज़माने का विकल्प भी है. इससे आपको पता चलेगा कि वह नाम उपलब्ध है या नहीं. इस चरण के बाद, इसे बदला नहीं जा सकता. यह प्रोजेक्ट की अवधि तक बना रहता है. - आपकी जानकारी के लिए बता दें कि एक तीसरी वैल्यू भी होती है, जिसे प्रोजेक्ट नंबर कहते हैं. इसका इस्तेमाल कुछ एपीआई करते हैं. इन तीनों वैल्यू के बारे में ज़्यादा जानने के लिए, दस्तावेज़ देखें.
- इसके बाद, आपको Cloud Console में बिलिंग चालू करनी होगी, ताकि Cloud संसाधनों/एपीआई का इस्तेमाल किया जा सके. इस कोडलैब को पूरा करने में ज़्यादा समय नहीं लगेगा. इस ट्यूटोरियल के बाद बिलिंग से बचने के लिए, संसाधनों को बंद किया जा सकता है. इसके लिए, बनाए गए संसाधनों को मिटाएं या प्रोजेक्ट को मिटाएं. Google Cloud के नए उपयोगकर्ताओं को, 300 डॉलर का क्रेडिट मिलेगा. वे इसे मुफ़्त में आज़मा सकते हैं.
Cloud Shell शुरू करें
Google Cloud को अपने लैपटॉप से रिमोटली ऐक्सेस किया जा सकता है. हालांकि, इस कोडलैब में Google Cloud Shell का इस्तेमाल किया जाएगा. यह क्लाउड में चलने वाला कमांड लाइन एनवायरमेंट है.
Google Cloud Console में, सबसे ऊपर दाएं कोने में मौजूद टूलबार पर, Cloud Shell आइकॉन पर क्लिक करें:

इसे चालू करने और एनवायरमेंट से कनेक्ट करने में सिर्फ़ कुछ सेकंड लगेंगे. यह प्रोसेस पूरी होने के बाद, आपको कुछ ऐसा दिखेगा:

इस वर्चुअल मशीन में, डेवलपमेंट के लिए ज़रूरी सभी टूल पहले से मौजूद हैं. यह 5 जीबी की होम डायरेक्ट्री उपलब्ध कराता है. साथ ही, यह Google Cloud पर काम करता है. इससे नेटवर्क की परफ़ॉर्मेंस और पुष्टि करने की प्रोसेस बेहतर होती है. इस कोडलैब में मौजूद सभी टास्क, ब्राउज़र में किए जा सकते हैं. आपको कुछ भी इंस्टॉल करने की ज़रूरत नहीं है.
4. शुरू करने से पहले
एपीआई चालू करें
Cloud Shell में, पक्का करें कि आपका प्रोजेक्ट सेट अप हो गया हो और वैरिएबल कॉन्फ़िगर किए गए हों.
gcloud auth login gcloud config list project gcloud config set project [YOUR-PROJECT-ID] export projectid=[YOUR-PROJECT-ID] export region1=us-central1 export zone1=us-central1-a export region2=us-south1 echo $projectid echo $region1 echo $zone1 echo $region2
सभी ज़रूरी सेवाएं चालू करें
gcloud services enable compute.googleapis.com gcloud services enable networkmanagement.googleapis.com gcloud services enable storage.googleapis.com gcloud services enable dns.googleapis.com
5. वीपीसी नेटवर्क बनाना
वह वीपीसी नेटवर्क बनाएं जहां आपका वीएम क्लाइंट और लोड बैलेंसिंग कॉम्पोनेंट होस्ट किए जाएंगे.
VPC नेटवर्क
Cloud Shell से
gcloud compute networks create myvpc \
--subnet-mode=custom \
--bgp-routing-mode=global
VPC में सबनेट बनाएं. पहला सबनेट वह होगा जहां आपका लोड बैलेंसर होस्ट किया जाएगा. दूसरा सबनेट, आपके लोड बैलेंसर के लिए सिर्फ़ प्रॉक्सी सबनेट है. तीसरा सबनेट वह जगह है जहां आपका वीएम क्लाइंट होस्ट किया जाएगा.
सबनेट बनाना
Cloud Shell से
gcloud compute networks subnets create $region2-subnet \
--network=myvpc \
--range=10.100.0.0/24 \
--region=$region2
gcloud compute networks subnets create $region2-proxy-subnet \
--network=myvpc \
--range=10.100.100.0/24 \
--region=$region2 \
--purpose=GLOBAL_MANAGED_PROXY \
--role=ACTIVE
gcloud compute networks subnets create $region1-subnet \
--network=myvpc \
--region=$region1 \
--range=10.200.0.0/24
नेटवर्क फ़ायरवॉल की नीति और फ़ायरवॉल के नियम बनाना
Cloud Shell से
gcloud compute network-firewall-policies create my-vpc-policy --global
gcloud compute network-firewall-policies associations create \
--firewall-policy my-vpc-policy \
--network myvpc \
--name network-myvpc \
--global-firewall-policy
आईएपी को अपने वीएम इंस्टेंस से कनेक्ट करने की अनुमति देने के लिए, फ़ायरवॉल का ऐसा नियम बनाएं जो:
- यह उन सभी वीएम इंस्टेंस पर लागू होता है जिन्हें आपको आईएपी का इस्तेमाल करके ऐक्सेस करना है.
- इसकी मदद से, 35.235.240.0/20 आईपी रेंज से इन्ग्रेस ट्रैफ़िक को आने की अनुमति मिलती है. इस रेंज में वे सभी आईपी पते शामिल हैं जिनका इस्तेमाल IAP, टीसीपी फ़ॉरवर्डिंग के लिए करता है.
Cloud Shell से
gcloud compute network-firewall-policies rules create 1000 \
--action ALLOW \
--firewall-policy my-vpc-policy \
--description "SSH with IAP" \
--direction INGRESS \
--src-ip-ranges 35.235.240.0/20 \
--layer4-configs tcp:22 \
--global-firewall-policy
6. Google Cloud Storage बकेट, सैंपल फ़ाइल बनाना, और अनुमतियां देना
Cloud Shell से
gcloud storage buckets create gs://$projectid-pscbackend --location=us
echo "Here is my bucket file contents" > my-bucket-contents.txt
gcloud storage cp my-bucket-contents.txt gs://$projectid-pscbackend/my-bucket-contents.txt
computesa=$(gcloud iam service-accounts list \
--filter='displayName:Compute Engine default service account' \
--format='value(email)')
echo $computesa
gcloud storage buckets add-iam-policy-binding gs://$projectid-pscbackend \
--member="serviceAccount:$computesa" \
--role="roles/storage.objectViewer"
आउटपुट का उदाहरण
Creating gs://xxxxxxxxxxx-pscbackend/... Copying file://my-bucket-contents.txt to gs://xxxxxxxxxxx-pscbackend/my-bucket-contents.txt Completed files 1/1 | 32.0B/32.0B xxxxxxxxxxx-compute@developer.gserviceaccount.com bindings: - members: - projectEditor:xxxxxxxxxxx - projectOwner:xxxxxxxxxxx role: roles/storage.legacyBucketOwner - members: - projectViewer:xxxxxxxxxxx role: roles/storage.legacyBucketReader - members: - projectEditor:xxxxxxxxxxx - projectOwner:xxxxxxxxxxx role: roles/storage.legacyObjectOwner - members: - projectViewer:xxxxxxxxxxx role: roles/storage.legacyObjectReader - members: - serviceAccount:xxxxxxxxxxx-compute@developer.gserviceaccount.com role: roles/storage.objectViewer etag: CAI= kind: storage#policy resourceId: projects/_/buckets/xxxxxxxxxxx-pscbackend version: 1
7. क्रॉस-रीजनल इंटरनल ऐप्लिकेशन लोड बैलेंसर के ज़रिए Google Cloud Storage को ऐक्सेस करने की अनुमति देना
क्रॉस-रीजनल इंटरनल ऐप्लिकेशन लोड बैलेंसर बनाना
सबसे पहले, लोड बैलेंसर के कॉम्पोनेंट बनाएं. आपको पीएससी एनईजी, बैकएंड सेवा, यूआरएल मैप, और एचटीटीपी टारगेट प्रॉक्सी बनानी होंगी.
Cloud Shell में
gcloud compute network-endpoint-groups create gcs-$region2-neg \
--region=$region2 \
--network-endpoint-type=private-service-connect \
--psc-target-service=storage.googleapis.com
gcloud compute backend-services create gcs-bes \
--load-balancing-scheme=INTERNAL_MANAGED \
--protocol=HTTP \
--global
gcloud compute backend-services add-backend gcs-bes \
--global \
--network-endpoint-group=gcs-$region2-neg \
--network-endpoint-group-region=$region2
gcloud compute url-maps create gcsilb \
--default-service=gcs-bes \
--global
gcloud compute target-http-proxies create gcs-http-proxy \
--url-map=gcsilb \
--global
लोड बैलेंसर के लिए, ट्रैफ़िक आगे बढ़ाने का नियम बनाएं.
Cloud Shell में
gcloud compute forwarding-rules create gcs-ilb-fr \
--load-balancing-scheme=INTERNAL_MANAGED \
--network=myvpc \
--subnet=$region2-subnet \
--target-http-proxy=gcs-http-proxy \
--ports=80 \
--subnet-region=$region2 \
--global
8. company.com के लिए Cloud DNS Private Zone बनाएं
सबसे पहले, A-रिकॉर्ड के लिए लोड बैलेंसर का आईपी पता तय करें और इसे वैरिएबल के तौर पर एक्सपोर्ट करें
Cloud Shell में
gcloud compute forwarding-rules describe gcs-ilb-fr \
--global
export lbip=$(gcloud compute forwarding-rules describe gcs-ilb-fr \
--global \
--format='value(IPAddress)')
echo $lbip
आउटपुट का उदाहरण
IPAddress: 10.100.0.4 IPProtocol: TCP creationTimestamp: 'xxxxxxxxxxxxxxx' description: '' fingerprint: xxxxxxxxxx id: 'xxxxxxxxxxxxxx' kind: compute#forwardingRule labelFingerprint: xxxxxxxxxx loadBalancingScheme: INTERNAL_MANAGED name: gcs-ilb-fr network: https://www.googleapis.com/compute/v1/projects/[projectID]/global/networks/myvpc networkTier: PREMIUM portRange: 80-80 selfLink: https://www.googleapis.com/compute/v1/projects/[projectID]/global/forwardingRules/gcs-ilb-fr selfLinkWithId: https://www.googleapis.com/compute/v1/projects/[projectID]/global/forwardingRules/xxxxxxxxxxxxxx subnetwork: https://www.googleapis.com/compute/v1/projects/[projectID]/regions/us-south1/subnetworks/us-south1-subnet target: https://www.googleapis.com/compute/v1/projects/[projectID]/global/targetHttpProxies/gcs-http-proxy 10.100.0.4
इसके बाद, अभी बनाए गए इंटरनल लोड बैलेंसर के लिए, डीएनएस प्राइवेट ज़ोन और A रिकॉर्ड बनाएं.
Cloud Shell से
gcloud dns managed-zones create "company-com" \
--dns-name=company.com. \
--description="company.com private dns zone" \
--visibility=private \
--networks=myvpc
gcloud dns record-sets create "storage.company.com" \
--zone="company-com" \
--type="A" \
--ttl="300" \
--rrdatas="$lbip"
9. टेस्ट वीएम बनाना
उपयोगकर्ता-क्लाइंट VM बनाना
Cloud Shell से
gcloud compute instances create testvm \
--zone="$zone1" \
--subnet="$region1-subnet" \
--no-address \
--metadata "startup-script=#! /bin/bash
cat <<EOF > /etc/profile.d/gcp-startup-vars.sh
export MYBUCKET=\"$projectid-pscbackend\"
export computesa=\"$computesa\"
EOF
chmod +x /etc/profile.d/gcp-startup-vars.sh"
10. लोड बैलेंसर के ज़रिए Google Cloud Storage से कनेक्ट करने की जांच करना
टेस्ट वीएम से कनेक्ट करना
Cloud Shell में
gcloud compute ssh "testvm"\
--zone "$zone1"\
--tunnel-through-iap \
--project $projectid
कनेक्टिविटी की जांच करना
In Test VM
TOKEN=$(curl -s -H "Metadata-Flavor: Google" "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/$computesa/token" | jq -r .access_token) curl -H "Authorization: Bearer $TOKEN" "http://storage.company.com/$MYBUCKET/my-bucket-contents.txt"
अनुमानित आउटपुट
Here is my bucket file contents
वीएम से बाहर निकलें.
TestVM में
exit
सफल!
11. क्लीनअप करने का तरीका
Cloud Shell से
gcloud dns record-sets delete "storage.company.com" \
--zone="company-com" \
--type="A"
gcloud dns managed-zones delete "company-com"
gcloud compute forwarding-rules delete gcs-ilb-fr \
--global \
--quiet
gcloud compute target-http-proxies delete gcs-http-proxy \
--global \
--quiet
gcloud compute url-maps delete gcsilb \
--global \
--quiet
gcloud compute backend-services delete gcs-bes \
--global \
--quiet
gcloud compute network-endpoint-groups delete gcs-$region2-neg \
--region=$region2 \
--quiet
gcloud storage rm -r gs://$projectid-pscbackend \
--quiet
gcloud compute instances delete testvm \
--zone=$zone1 \
--quiet
gcloud compute network-firewall-policies rules delete 1000 \
--firewall-policy my-vpc-policy \
--global-firewall-policy \
--quiet
gcloud compute network-firewall-policies associations delete \
--firewall-policy my-vpc-policy \
--name=network-myvpc \
--global-firewall-policy \
--quiet
gcloud compute network-firewall-policies delete my-vpc-policy \
--global \
--quiet
gcloud compute networks subnets delete $region1-subnet \
--region=$region1 \
--quiet
gcloud compute networks subnets delete $region2-proxy-subnet \
--region=$region2 \
--quiet
gcloud compute networks subnets delete $region2-subnet \
--region=$region2 \
--quiet
gcloud compute networks delete myvpc \
--quiet
12. बधाई हो!
कोडलैब पूरा करने के लिए बधाई.
हमने क्या-क्या बताया
- Google Cloud Storage में बुनियादी फ़ाइलें डिप्लॉय करना
- Google Cloud Storage के लिए पीएससी बैकएंड डिप्लॉय करना
- एक से ज़्यादा क्षेत्रों में इंटरनल ऐप्लिकेशन लोड बैलेंसर को डिप्लॉय करना