Google API के लिए Private Service Connect

1. परिचय

Private Service Connect की मदद से, Google API को ऐक्सेस करने के लिए, अपने वीपीसी नेटवर्क में ग्लोबल इंटरनल आईपी पतों का इस्तेमाल करके प्राइवेट एंडपॉइंट बनाए जा सकते हैं. इन इंटरनल आईपी पतों को डीएनएस नाम असाइन किए जा सकते हैं. जैसे, storage-pscendpoint.p.googleapis.com और bigtable-adsteam.p.googleapis.com. एपीआई अनुरोधों को storage.googleapis.com जैसे सार्वजनिक सेवा एंडपॉइंट पर भेजने के बजाय, उन्हें Private Service Connect एंडपॉइंट पर भेजा जा सकता है. यह एंडपॉइंट, आपके वीपीसी नेटवर्क के लिए निजी और इंटरनल होता है.

ये नाम और आईपी पते, आपके वीपीसी नेटवर्क और उन सभी ऑन-प्रिमाइसेस नेटवर्क के लिए इंटरनल होते हैं जो Cloud VPN टनल या Cloud Interconnect अटैचमेंट (वीएलएएन) का इस्तेमाल करके इससे कनेक्ट किए जाते हैं.

आपके पास यह कंट्रोल करने का विकल्प होता है कि कौनसा ट्रैफ़िक किस एंडपॉइंट पर जाए. साथ ही, यह भी दिखाया जा सकता है कि ट्रैफ़िक, Google Cloud में ही रहता है.

आपको क्या सीखने को मिलेगा

  • Private Service Connect के इस्तेमाल के उदाहरण
  • नेटवर्क की ज़रूरी शर्तें
  • काम करने वाले एपीआई
  • Private Service Connect एंडपॉइंट बनाना
  • क्लाउड स्टोरेज बकेट बनाना
  • Cloud DNS के निजी ज़ोन बनाना और उन्हें अपडेट करना
  • public.googleapis को ऐक्सेस करने के लिए, NAT GW बनाना
  • BOTO कॉन्फ़िगरेशन फ़ाइल बनाना और उसे अपडेट करना
  • अपने पीएससी सेवा एंडपॉइंट के ख़िलाफ़ VM1 पर gsutil list कमांड चलाएं
  • VM2 पर gsutil list को सार्वजनिक googleapis.com के ख़िलाफ़ हल करें
  • डीएनएस रिज़ॉल्यूशन की पुष्टि करने के लिए, Tcpdump का इस्तेमाल करना

आपको इन चीज़ों की ज़रूरत होगी

  • डीएनएस, नैनो या vi एडिटर की जानकारी

2. Private Service Connect के इस्तेमाल के उदाहरण

एक ही वीपीसी नेटवर्क में, एक से ज़्यादा Private Service Connect एंडपॉइंट बनाए जा सकते हैं. किसी खास एंडपॉइंट के लिए बैंडविथ की कोई सीमा नहीं है. Private Service Connect एंडपॉइंट, ग्लोबल इंटरनल आईपी पतों का इस्तेमाल करते हैं. इसलिए, इनका इस्तेमाल आपके वीपीसी नेटवर्क में मौजूद किसी भी संसाधन के लिए किया जा सकता है.

एक से ज़्यादा एंडपॉइंट की मदद से, Cloud Router और फ़ायरवॉल के नियमों का इस्तेमाल करके, अलग-अलग नेटवर्क पाथ तय किए जा सकते हैं.

  • फ़ायरवॉल के नियम बनाए जा सकते हैं. इससे कुछ वीएम को Private Service Connect एंडपॉइंट के ज़रिए Google API को ऐक्सेस करने से रोका जा सकता है. वहीं, अन्य वीएम को ऐक्सेस करने की अनुमति दी जा सकती है.
  • आपके पास वीएम इंस्टेंस पर फ़ायरवॉल का ऐसा नियम हो सकता है जो इंटरनेट पर सभी ट्रैफ़िक को अनुमति न दे. हालांकि, Private Service Connect एंडपॉइंट पर भेजा गया ट्रैफ़िक अब भी Google तक पहुंचता है.
  • अगर आपके पास ऐसे ऑन-प्रिमाइसेस होस्ट हैं जो Cloud VPN टनल या Cloud Interconnect अटैचमेंट (वीएलएएन) का इस्तेमाल करके वीपीसी से कनेक्ट हैं, तो सार्वजनिक इंटरनेट पर अन्य अनुरोध भेजते समय, कुछ अनुरोध टनल या वीएलएएन के ज़रिए भेजे जा सकते हैं. इस कॉन्फ़िगरेशन की मदद से, Google Books जैसी उन सेवाओं के लिए टनल या वीएलएएन को बायपास किया जा सकता है जिनके लिए Private Google Access काम नहीं करता. इस कॉन्फ़िगरेशन को बनाने के लिए, Private Service Connect एंडपॉइंट बनाएं. साथ ही, Cloud Router की कस्टम रूट विज्ञापन सुविधा का इस्तेमाल करके Private Service Connect एंडपॉइंट के आईपी पतों का विज्ञापन करें. इसके अलावा, Cloud DNS की इनबाउंड फ़ॉरवर्डिंग नीति चालू करें. ऐप्लिकेशन, Private Service Connect एंडपॉइंट के नाम का इस्तेमाल करके, Cloud VPN टनल या Cloud Interconnect अटैचमेंट (वीएलएएन) के ज़रिए कुछ अनुरोध भेज सकता है. साथ ही, डिफ़ॉल्ट डीएनएस नाम का इस्तेमाल करके, इंटरनेट पर अन्य अनुरोध भेज सकता है.
  • अगर आपने अपने ऑन-प्रिमाइसेस नेटवर्क को वीपीसी नेटवर्क से कनेक्ट करने के लिए, कई Cloud Interconnect अटैचमेंट (वीएलएएन) का इस्तेमाल किया है, तो आपके पास कुछ ट्रैफ़िक को एक वीएलएएन और बाकी को दूसरे वीएलएएन पर भेजने का विकल्प होता है. जैसा कि इमेज 2 में दिखाया गया है. इससे Google के वाइड-एरिया नेटवर्क के बजाय, अपने नेटवर्क का इस्तेमाल किया जा सकता है. साथ ही, भौगोलिक क्षेत्र से जुड़ी ज़रूरी शर्तों को पूरा करने के लिए, डेटा को कंट्रोल किया जा सकता है. इस कॉन्फ़िगरेशन को बनाने के लिए, दो Private Service Connect एंडपॉइंट बनाएं. पहले वीएलएएन को मैनेज करने वाले Cloud Router के BGP सेशन पर, पहले एंडपॉइंट के लिए कस्टम रूट का विज्ञापन बनाएं. साथ ही, दूसरे वीएलएएन को मैनेज करने वाले Cloud Router के BGP सेशन पर, दूसरे एंडपॉइंट के लिए कोई दूसरा कस्टम रूट का विज्ञापन बनाएं. ऑन-प्रिमाइसेस होस्ट, Private Service Connect एंडपॉइंट के नाम का इस्तेमाल करने के लिए कॉन्फ़िगर किए जाते हैं. ये होस्ट, Cloud Interconnect अटैचमेंट (वीएलएएन) के ज़रिए ट्रैफ़िक भेजते हैं.
  • ऐक्टिव/ऐक्टिव टोपोलॉजी में, एक से ज़्यादा Cloud Interconnect अटैचमेंट (वीएलएएन) का भी इस्तेमाल किया जा सकता है. अगर वीएलएएन मैनेज करने वाले Cloud Router पर बीजीपी सेशन के लिए, कस्टम रूट विज्ञापन का इस्तेमाल करके एक ही Private Service Connect एंडपॉइंट आईपी पते का विज्ञापन दिखाया जाता है, तो ऑन-प्रिमाइसेस सिस्टम से एंडपॉइंट पर भेजे गए पैकेट, ईसीएमपी का इस्तेमाल करके वीएलएएन में रूट किए जाते हैं.

5e142c2fbf6f010e.png

पहली इमेज. Private Service Connect, Cloud Router, और ऑन-प्रिमाइसेस होस्ट को कॉन्फ़िगर करके, यह कंट्रोल किया जा सकता है कि Google API को ट्रैफ़िक भेजने के लिए, किस Cloud Interconnect अटैचमेंट (वीएलएएन) का इस्तेमाल किया जाए.

3. नेटवर्क की ज़रूरी शर्तें

Private Service Connect का इस्तेमाल करने के लिए, बाहरी आईपी पतों के बिना वर्चुअल मशीन (वीएम) इंस्टेंस का प्राइमरी इंटरफ़ेस, ऐसे सबनेट में होना चाहिए जिसमें Private Google Access की सुविधा चालू हो.

बाहरी आईपी पते वाली कोई वीएम, Private Service Connect एंडपॉइंट का इस्तेमाल करके Google के एपीआई और सेवाओं को ऐक्सेस कर सकती है. भले ही, उसके सबनेट के लिए Private Google Access की सुविधा चालू हो या न हो. Private Service Connect एंडपॉइंट से कनेक्टिविटी, Google के नेटवर्क में ही रहती है.

Private Service Connect एंडपॉइंट, पीयर किए गए वीपीसी नेटवर्क से ऐक्सेस नहीं किए जा सकते.

काम करने वाले एपीआई

Private Service Connect एंडपॉइंट बनाते समय, आपको यह चुनना होता है कि आपको एपीआई के किस बंडल को ऐक्सेस करना है: all-apis या vpc-sc.

एपीआई बंडल से, उन एपीआई को ऐक्सेस किया जा सकता है जो Private Google Access वीआईपी के ज़रिए उपलब्ध होते हैं.

  • all-apis बंडल, private.googleapis.com के तौर पर उपलब्ध कराए गए सभी एपीआई का ऐक्सेस देता है.
  • vpc-sc बंडल, उन सभी एपीआई का ऐक्सेस देता है जो restricted.googleapis.com के लिए प्रतिबंधित हैं.

4. कोडलैब टोपोलॉजी और इस्तेमाल का उदाहरण

2ac275eb86f26338.png

पहली इमेज - कोडलैब टोपोलॉजी

कोडलैब के इस्तेमाल का उदाहरण -

हमारे ग्राहक को क्लाउड स्टोरेज से डेटा ट्रांसफ़र करने के लिए, निजी (इंटरकनेक्ट) और सार्वजनिक googleapis, दोनों का ऐक्सेस चाहिए. हम अपने ग्राहकों की ज़रूरतों को पूरा करने के लिए, Private Service Connect को डिप्लॉय करेंगे. इसमें यूनीक /32 पता, BOTO कॉन्फ़िगरेशन, और डीएनएस रिकॉर्ड अपडेट शामिल होंगे. वर्चुअल मशीन 1, क्लाउड स्टोरेज बकेट को ऐक्सेस करने के लिए पीएससी का इस्तेमाल करेगी. इसके उलट, VM2, NAT GW के ज़रिए googleapis.com की सार्वजनिक आईपी रेंज का इस्तेमाल करेगी.

लैब के सभी पहलुओं को Google Cloud Platform में डिप्लॉय किया जाता है. हालांकि, इस्तेमाल का यही तरीका हाइब्रिड क्लाउड डिप्लॉयमेंट के लिए भी लागू होता है, जिसके लिए ट्रैफ़िक को अलग करने की ज़रूरत होती है.

5. सेटअप और ज़रूरी शर्तें

अपने हिसाब से एनवायरमेंट सेट अप करना

  1. Cloud Console में साइन इन करें. इसके बाद, नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. अगर आपके पास पहले से कोई Gmail या Google Workspace खाता नहीं है, तो आपको एक खाता बनाना होगा.

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

प्रोजेक्ट आईडी याद रखें. यह सभी Google Cloud प्रोजेक्ट के लिए एक यूनीक नाम होता है. ऊपर दिया गया नाम पहले ही इस्तेमाल किया जा चुका है. इसलिए, यह आपके लिए काम नहीं करेगा. माफ़ करें! इस कोड लैब में इसे बाद में PROJECT_ID के तौर पर दिखाया जाएगा.

  1. इसके बाद, Google Cloud संसाधनों का इस्तेमाल करने के लिए, आपको Cloud Console में बिलिंग चालू करनी होगी.

इस कोडलैब को पूरा करने में ज़्यादा खर्च नहीं आएगा. "सफ़ाई करना" सेक्शन में दिए गए निर्देशों का पालन करना न भूलें. इसमें बताया गया है कि संसाधनों को कैसे बंद किया जाए, ताकि इस ट्यूटोरियल के बाद आपको बिलिंग न करनी पड़े. Google Cloud के नए उपयोगकर्ताओं को, मुफ़्त में आज़माने के लिए 300 डॉलर का क्रेडिट मिलता है.

Cloud Shell शुरू करें

Google Cloud को अपने लैपटॉप से रिमोटली ऐक्सेस किया जा सकता है. हालांकि, इस कोडलैब में Google Cloud Shell का इस्तेमाल किया जाएगा. यह क्लाउड में चलने वाला कमांड लाइन एनवायरमेंट है.

GCP Console में, सबसे ऊपर दाईं ओर मौजूद टूलबार पर मौजूद Cloud Shell आइकॉन पर क्लिक करें:

bce75f34b2c53987.png

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

f6ef2b5f13479f3a.png

इस वर्चुअल मशीन में, डेवलपमेंट के लिए ज़रूरी सभी टूल पहले से मौजूद हैं. यह 5 जीबी की होम डायरेक्ट्री उपलब्ध कराता है. साथ ही, यह Google Cloud पर काम करता है. इससे नेटवर्क की परफ़ॉर्मेंस और पुष्टि करने की प्रोसेस बेहतर होती है. इस लैब में मौजूद सभी टास्क को सिर्फ़ ब्राउज़र की मदद से पूरा किया जा सकता है.

6. शुरू करने से पहले

एपीआई चालू करें

Cloud Shell में, पक्का करें कि आपका प्रोजेक्ट आईडी सेट अप हो

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname

सभी ज़रूरी सेवाएं चालू करें

gcloud services enable compute.googleapis.com
gcloud services enable servicedirectory.googleapis.com
gcloud services enable dns.googleapis.com

7. वीपीसी नेटवर्क बनाना

VPC नेटवर्क

Cloud Shell से

gcloud compute networks create psc-lab --subnet-mode custom

सबनेट बनाएं

Cloud Shell से

gcloud compute networks subnets create psclab-subnet \
--network psc-lab --range 10.0.0.0/24 --region us-central1 --enable-private-ip-google-access

फ़ायरवॉल के नियम बनाना

आईएपी को अपने वीएम इंस्टेंस से कनेक्ट करने की अनुमति देने के लिए, फ़ायरवॉल का ऐसा नियम बनाएं जो:

  • यह उन सभी वीएम इंस्टेंस पर लागू होता है जिन्हें आपको आईएपी का इस्तेमाल करके ऐक्सेस करना है.
  • इसकी मदद से, 35.235.240.0/20 आईपी रेंज से इन्ग्रेस ट्रैफ़िक को आने की अनुमति मिलती है. इस रेंज में वे सभी आईपी पते शामिल हैं जिनका इस्तेमाल IAP, टीसीपी फ़ॉरवर्डिंग के लिए करता है.

Cloud Shell से

gcloud compute firewall-rules create psclab-ssh \
    --network psc-lab --allow tcp:22 --source-ranges=35.235.240.0/20

Cloud NAT इंस्टेंस बनाना

क्लाउड राऊटर बनाना

Cloud Shell से

gcloud compute routers create crnat \
    --network psc-lab \
    --asn 65000 \
    --region us-central1

Cloud NAT बनाना

Cloud Shell से

gcloud compute routers nats create cloudnat \
    --router=crnat \
    --auto-allocate-nat-external-ips \
    --nat-all-subnet-ip-ranges \
    --enable-logging \
    --region us-central1

8. Private Service Connect एंडपॉइंट बनाना

Private Service Connect एंडपॉइंट आईपी <pscendpointip> को कॉन्फ़िगर करते समय, आपको एक ऐसा यूनीक आईपी पता देना होगा जो आपके वीपीसी में तय न किया गया हो.

Cloud Shell से

gcloud compute addresses create psc-ip \
    --global \
    --purpose=PRIVATE_SERVICE_CONNECT \
    --addresses=192.168.255.250 \
    --network=psc-lab

यह कुकी, लैब की अवधि के लिए ‘pscendpointip' को सेव करती है

pscendpointip=$(gcloud compute addresses list --filter=name:psc-ip --format="value(address)")

echo $pscendpointip

एंडपॉइंट को Google API और सेवाओं से कनेक्ट करने के लिए, फ़ॉरवर्ड करने का नियम बनाएं.

Cloud Shell से

gcloud compute forwarding-rules create pscendpoint \
    --global \
    --network=psc-lab \
    --address=psc-ip \
    --target-google-apis-bundle=all-apis

कॉन्फ़िगर किए गए Private Service Connect एंडपॉइंट की सूची बनाएं

Cloud Shell से

gcloud compute forwarding-rules list  \
--filter target="(all-apis OR vpc-sc)" --global

कॉन्फ़िगर किए गए Private Service Connect एंडपॉइंट के बारे में जानकारी

Cloud Shell से

gcloud compute forwarding-rules describe \
    pscendpoint --global

9. बकेट बनाना

Cloud Storage बकेट बनाएं और BUCKET_NAME को ऐसे नाम से बदलें जो दुनिया भर में यूनीक हो.

Cloud Shell से

gsutil mb  -l us-central1 -b on gs://BUCKET_NAME

लैब की अवधि के लिए ‘BUCKET_NAME' को सेव करता है

BUCKET_NAME=YOUR BUCKET NAME
echo $BUCKET_NAME

10. डीएनएस कॉन्फ़िगरेशन

Private Service Connect एंडपॉइंट बनाने पर, Service Directory उन एपीआई और सेवाओं के लिए डीएनएस रिकॉर्ड जनरेट करता है जिन्हें उस एंडपॉइंट का इस्तेमाल करके उपलब्ध कराया जाता है.

डीएनएस रिकॉर्ड, आपके Private Service Connect एंडपॉइंट के आईपी पते की ओर इशारा करते हैं. ये इस फ़ॉर्मैट में होते हैं: SERVICE-ENDPOINT.p.googleapis.com.

अपने एपीआई अनुरोधों में इन डीएनएस नामों का इस्तेमाल करके, अनुरोध को Private Service Connect एंडपॉइंट पर भेजा जा सकता है. अपने अनुरोध के होस्ट हेडर में भी इन डीएनएस नामों का इस्तेमाल किया जा सकता है.

अगर आपको Google के एपीआई और सेवाओं को ऐक्सेस करने वाले किसी क्लाइंट या ऐप्लिकेशन के साथ Private Service Connect एंडपॉइंट का इस्तेमाल करना है, तो अपने क्लाइंट या ऐप्लिकेशन को p.googleapis.com डीएनएस नामों का इस्तेमाल करने के लिए अपडेट करें.

ज़्यादा जानकारी के लिए, अपने क्लाइंट या क्लाइंट लाइब्रेरी का दस्तावेज़ देखें. उदाहरण के लिए:

  • Python: google-api-core पैकेज में, Client options class में api_endpoint को कॉन्फ़िगर किया जा सकता है.
  • Go: api पैकेज में Client options package में जाकर, WithEndpoint को कॉन्फ़िगर किया जा सकता है.
  • gcloud: You can configure api_endpoint_overrides using this command. gcloud config set api_endpoint_overrides/SERVICE ENDPOINT_URL

उदाहरण के लिए: gcloud config set api_endpoint_overrides/storage https://storage-xyz.p.googleapis.com/storage/v1/

अगर किसी दूसरे एंडपॉइंट का इस्तेमाल करने के लिए, क्लाइंट या ऐप्लिकेशन को कॉन्फ़िगर नहीं किया जा सकता, तो डिफ़ॉल्ट डीएनएस नामों से मेल खाने वाले डीएनएस रिकॉर्ड बनाएं. उदाहरण के लिए, storage.googleapis.com. डिफ़ॉल्ट डीएनएस नामों का इस्तेमाल करके डीएनएस रिकॉर्ड बनाना लेख पढ़ें.

डीएनएस रिकॉर्ड की पुष्टि करना

Cloud Console में, Network Services → Cloud DNS में जाकर जनरेट की गई डीएनएस एंट्री की पुष्टि करें. जनरेट किए गए डीएनएस नाम ‘p.googleapis.com' को नोट करें.

11. वर्चुअल मशीनें बनाना

Private Service Connect की पुष्टि करने के लिए इस्तेमाल की गई वर्चुअल मशीन (psc-instance-1) बनाएं

Cloud Shell से

  gcloud compute instances create psc-instance-1 \
    --subnet psclab-subnet \
    --zone us-central1-a \
    --image=centos-7-v20210122 \
    --image-project=centos-cloud \
    --no-address \
    --metadata=startup-script=yum\ install\ tcpdump\ -y$'\n'yum\ install\ bind-utils\ -y$'\n'yum\ install\ nano\ -y 

VM इंस्टेंस (psc-instance-1) में लॉग इन करें

Cloud Shell के ज़रिए वीएम में एसएसएच करें

gcloud compute ssh --zone "us-central1-a" "psc-instance-1" --project "$projectname"

नीचे दिए गए स्क्रीनशॉट में दिखाए गए + पर क्लिक करके, तीन बार Cloud Shell के अतिरिक्त टर्मिनल बनाएं.

69ea94e1527912bb.png

सार्वजनिक Googleapis की पुष्टि करने के लिए, वर्चुअल मशीन (psc-instance-2) बनाएं

टैब 2 से

  gcloud compute instances create psc-instance-2 \
    --subnet psclab-subnet \
    --zone us-central1-a \
    --image=centos-7-v20210122 \
    --image-project=centos-cloud \
    --no-address \
    --metadata=startup-script=yum\ install\ tcpdump\ -y$'\n'yum\ install\ bind-utils\ -y$'\n'yum\ install\ nano\ -y 

दूसरे टैब से, Cloud Shell के ज़रिए वीएम में एसएसएच करें

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname


gcloud compute ssh --zone "us-central1-a" "psc-instance-2" --project "$projectname"

तीसरे टैब से, Cloud Shell के ज़रिए psc-instance-1 में एसएसएच करें

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname


gcloud compute ssh --zone "us-central1-a" "psc-instance-1" --project "$projectname"

चौथे टैब से, Cloud Shell के ज़रिए psc-instance-2 में शेल एसएसएच करें

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname


gcloud compute ssh --zone "us-central1-a" "psc-instance-2" --project "$projectname"

12. Gsutil के मौजूदा व्यवहार की पुष्टि करना

चौथे टैब (psc-instance-2) से tcpdump शुरू करें और डीएनएस ट्रैफ़िक की निगरानी करें

sudo tcpdump -vv -i eth0 port 53

दूसरे टैब (psc-instance-2) से स्टोरेज बकेट के डीएनएस लुकअप की जांच करें

BUCKET_NAME=YOUR BUCKET NAME
echo $BUCKET_NAME
gsutil -D ls gs://$BUCKET_NAME

gsutil debug की जांच करें. HOST storage.googleapis.com का इस्तेमाल डीएनएस रिज़ॉल्यूशन के लिए किया जाता है

<snip>
send: 'GET /storage/v1/b/$BUCKET_NAME/o?delimiter=%2F&projection=noAcl&versions=False&fields=prefixes%2CnextPageToken%2Citems%2Fname&alt=json&maxResults=1000 HTTP/1.1\r\nHost: storage.googleapis.com\r\ncontent-length: 0\r\nauthorization: Bearer ya29.c.KpkB7wfaMjfc_WXEKCeNF4Md0fEHnfDU7tqBf3cd0u43yEmYXqj8fX_X5wWdNdDVH6k1EkjeAeIJDzKGvyjPOkf1Io2kVeUqYX69sDv53huW1NslffjAHKchbZ0CP3Cg83TS3Pa55jLcuE0TLbYycVrgSbD3H90LaapUGbWD3kj4IsJLf9J8R98Bqobu8HZwwqk92hlZ4zVzRqOM\r\naccept-encoding: gzip, deflate\r\naccept: application/json\r\nuser-agent: apitools Python/2.7.5 gsutil/4.57 (linux2) analytics/disabled interactive/True command/ls google-cloud-sdk/324.0.0\r\n\r\n'
reply: 'HTTP/1.1 200 OK\r\n'
<snip>

चौथे टैब (psc-instance-2) में जाकर पुष्टि करें कि स्टोरेज बकेट को ऐक्सेस करते समय, GoogleAPI.com के सार्वजनिक डीएनएस ए रिकॉर्ड का इस्तेमाल किया जा रहा है.

metadata.google.internal.domain > psc-instance-2.c.yourprojectname.internal.33973: [udp sum ok] 36442 q: A? storage.googleapis.com. 11/0/0 storage.googleapis.com. A 108.177.111.128, storage.googleapis.com. A 142.250.128.128, storage.googleapis.com. A 74.125.70.128, storage.googleapis.com. A 74.125.201.128, storage.googleapis.com. A 64.233.183.128, storage.googleapis.com. A 173.194.198.128, storage.googleapis.com. A 172.217.219.128, storage.googleapis.com. A 142.250.136.128, storage.googleapis.com. A 209.85.234.128, storage.googleapis.com. A 172.217.212.128, storage.googleapis.com. A 172.217.214.128

13. Gsutil के काम करने के तरीके में बदलाव करना

पिछले चरण में, आपने एक Private DNS Zone और PSC एंडपॉइंट के आईपी पते पर मैप किया गया A रिकॉर्ड बनाया था. अगले चरण में, हम psc-instance-1 पर VM BOTO फ़ाइल को अपडेट करके, gsutil के काम करने के तरीके को कंट्रोल करेंगे.

पहले टैब (psc-instance-1) में वीएम इंस्टेंस टर्मिनल से, डिफ़ॉल्ट BOTO कॉन्फ़िगरेशन देखें

[psc-instance ~]$ more  /etc/boto.cfg

आउटपुट (आपका project_id अलग होगा)

[GSUtil]
default_project_id  = [your project number]
default_api_version = 2

[GoogleCompute]
service_account = default

nano या VI Editor का इस्तेमाल करके, BOTO कॉन्फ़िगरेशन अपडेट करें. साथ ही, पक्का करें कि आपने सभी एंट्री कॉपी करके चिपका दी हों.

उदाहरण: sudo nano /etc/boto.cfg

या

उदाहरण: sudo vi /etc/boto.cfg

वीएम इंस्टेंस टर्मिनल टैब 1(psc-instance-1) से

[Credentials]
gs_host = storage-pscendpoint.p.googleapis.com
gs_host_header = storage.googleapis.com
gs_json_host = storage-pscendpoint.p.googleapis.com
gs_json_host_header = www.googleapis.com

कॉन्फ़िगरेशन की पुष्टि करें. डीएनएस लुकअप के लिए, [क्रेडेंशियल] का क्रम ज़रूरी है

more /etc/boto.cfg
[Credentials]
gs_host = storage-pscendpoint.p.googleapis.com
gs_host_header = storage.googleapis.com
gs_json_host = storage-pscendpoint.p.googleapis.com
gs_json_host_header = www.googleapis.com

[GSUtil]
default_project_id  = [your project number
default_api_version = 2

[GoogleCompute]
service_account = default

14. gsutil lookup के अपडेट किए गए व्यवहार की पुष्टि करना

तीसरे टैब (psc-instance-1) से tcpdump शुरू करें और डीएनएस ट्रैफ़िक की निगरानी करें

sudo tcpdump -vv -i eth0 port 53

टैब 1 (psc-instance-1) से gsutil लुकअप के लिए स्टोरेज बकेट की जांच करें

BUCKET_NAME=YOUR BUCKET NAME
echo $BUCKET_NAME

gsutil -D ls gs://$BUCKET_NAME

डीबग लॉग से पुष्टि होती है कि Private Service Connect एंडपॉइंट "pscendpoint" के ज़रिए स्टोरेज बकेट को ऐक्सेस किया जा सकता है

आउटपुट:

<snip>
INFO 0131 22:14:18.795986 base_api.py] Making http GET to https://storage-pscendpoint.p.googleapis.com/storage/v1/b/$BUCKET_NAME/o?delimiter=%2F&projection=noAcl&versions=False&fields=prefixes%2CnextPageToken%2Citems%2Fname&alt=json&maxResults=1000
INFO 0131 22:14:18.796415 base_api.py] Headers: {u'Host': 'www.googleapis.com',
 'accept': 'application/json',
 'accept-encoding': 'gzip, deflate',
 'content-length': '0',
 'user-agent': 'apitools Python/2.7.5 gsutil/4.57 (linux2) analytics/disabled interactive/True command/ls google-cloud-sdk/324.0.0'}
INFO 0131 22:14:18.796502 base_api.py] Body: (none)
connect: (storage-pscendpoint.p.googleapis.com, 443)
send: 'GET /storage/v1/b/psc-bucket/o?delimiter=%2F&projection=noAcl&versions=False&fields=prefixes%2CnextPageToken%2Citems%2Fname&alt=json&maxResults=1000 HTTP/1.1\r\ncontent-length: 0\r\naccept-encoding: gzip, deflate\r\naccept: application/json\r\nuser-agent: apitools Python/2.7.5 gsutil/4.57 (linux2) analytics/disabled interactive/True command/ls google-cloud-sdk/324.0.0\r\nhost: www.googleapis.com\r\nauthorization: Bearer ya29.c.KpkB7wd3XWiYeRyTuth5_HPlNV-hPwc2Nn7RSIeMpzrpa_j4EsMPl2m_mDGKAcGHvYIgiC5bT2UVQirAPpSbbpToa6G6lkaBbH5SZwHwgNXYfisp5Ww1UjXe4rTa69a_Wp0WesafcwPNnYzDo3xf5VGh3iGhySA04kTXuyT--MgOU8U-XLII2LJQxUWlV8KEdrvyCuqRb-jsDdk_\r\n\r\n'
reply: 'HTTP/1.1 200 OK\r\n'
<snip>

तीसरे टैब (psc-instance-1) में जाकर पुष्टि करें कि आपका पीएससी एंडपॉइंट आईपी, डीएनएस पता रिकॉर्ड है. इसका इस्तेमाल आपके स्टोरेज बकेट को ऐक्सेस करने के लिए किया जाता है.

@psc-instance-1 ~]$ sudo tcpdump -vv -i eth0 port 53
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
05:02:33.936256 IP (tos 0x0, ttl 64, id 55416, offset 0, flags [DF], proto UDP (17), length 82)
    psc-instance-1.c.yourprojectname.internal.42296 > metadata.google.internal.domain: [bad udp cksum 0x5e4e -> 0xcceb!] 34796+ A? storage-pscendpoint.p.googleapis.com. (54)
05:02:33.936269 IP (tos 0x0, ttl 64, id 55417, offset 0, flags [DF], proto UDP (17), length 82)
    psc-instance-1.c.yourprojectname.internal.42296 > metadata.google.internal.domain: [bad udp cksum 0x5e4e -> 0x3ebd!] 5632+ AAAA? storage-pscendpoint.p.googleapis.com. (54)
05:02:33.944018 IP (tos 0x0, ttl 64, id 0, offset 0, flags [none], proto UDP (17), length 98)
    metadata.google.internal.domain > psc-instance-1.c.yourprojectname.42296: [udp sum ok] 34796 q: A? storage-pscendpoint.p.googleapis.com. 1/0/0 storage-pscendpoint.p.googleapis.com. A 10.10.110.10 (70)
05:02:33.946005 IP (tos 0x0, ttl 64, id 0, offset 0, flags [none], proto UDP (17), length 175)

पुष्टि करें कि डीएनएस रिज़ॉल्यूशन के लिए, अब Private Service Connect एंडपॉइंट आईपी का इस्तेमाल किया जा रहा है

tab1 से

nslookup storage-pscendpoint.p.googleapis.com

आउटपुट

@psc-instance ~]$ nslookup storage-pscendpoint.p.googleapis.com
Server:         169.254.169.254
Address:        169.254.169.254#53

Non-authoritative answer:
Name:   storage-pscendpoint.p.googleapis.com
Address: <pscip>

15. क्लीनअप करने का तरीका

VM इंस्टेंस (सभी टैब) से बाहर निकलें

exit

एक ही Cloud Shell टर्मिनल से लैब कॉम्पोनेंट मिटाना

gcloud compute routers nats delete cloudnat --router=crnat --region=us-central1 --quiet

gcloud compute routers delete crnat --region=us-central1 --quiet

gcloud compute forwarding-rules delete pscendpoint --global --quiet

gcloud compute addresses delete psc-ip --global --quiet

gsutil rm -r gs://$BUCKET_NAME

gcloud compute instances delete psc-instance-1 --zone=us-central1-a --quiet

gcloud compute instances delete psc-instance-2 --zone=us-central1-a --quiet

gcloud compute firewall-rules delete psclab-ssh --quiet

gcloud compute networks subnets delete psclab-subnet --region us-central1 --quiet

gcloud compute networks delete psc-lab --quiet

Console में जाकर पक्का करें कि आपको सही प्रोजेक्ट दिख रहा हो. इसके बाद, Networking Services → Cloud DNS को चुनें

16. बधाई हो!

कोडलैब पूरा करने के लिए बधाई.

हमने क्या-क्या बताया

  • Private Service Connect के इस्तेमाल के उदाहरण
  • नेटवर्क की ज़रूरी शर्तें
  • काम करने वाले एपीआई
  • Private Service Connect एंडपॉइंट बनाया गया हो
  • क्लाउड स्टोरेज बकेट बनाई गई हो
  • BOTO कॉन्फ़िगरेशन फ़ाइल अपडेट की गई
  • NAT GW बनाया गया
  • VM1 पर gsutil list कमांड चलाएं, जो आपके पीएससी सेवा एंडपॉइंट के हिसाब से काम करती है
  • VM2 पर gsutil list कमांड चलाएं, जो सार्वजनिक googleapis.com के ख़िलाफ़ काम करती है
  • डीएनएस रिज़ॉल्यूशन की पुष्टि करने के लिए, Tcpdump का इस्तेमाल करना