Google API के लिए Private Service Connect

1. परिचय

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

ये नाम और आईपी पते, आपके VPC नेटवर्क और कंपनी की इमारत में मौजूद ऐसे नेटवर्क के इंटरनल होने चाहिए जिन्हें Cloud वीपीएन टनल या क्लाउड इंटरकनेक्ट अटैचमेंट (VLAN) का इस्तेमाल करके, इससे कनेक्ट किया गया हो.

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

आपको इनके बारे में जानकारी मिलेगी

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

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

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

2. निजी सेवा कनेक्ट के इस्तेमाल के उदाहरण

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

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

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

5e142c2fbf6f010e.png

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

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

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

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

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

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

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

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

  • All-apis बंडल, उन एपीआई का ऐक्सेस देता है जिन्हें private.googleapis.com पर ऐक्सेस किया जा सकता है.
  • vpc-sc बंडल उन एपीआई का ऐक्सेस देता है जो translate.googleapis.com के पास हैं.

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

2ac275eb86f26338.png

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

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

हमारे ग्राहक को क्लाउड स्टोरेज का डेटा ट्रांसफ़र करने के लिए, निजी (इंटरकनेक्ट) और सार्वजनिक Google API का ऐक्सेस, दोनों की ज़रूरत होती है. ग्राहकों की ज़रूरी शर्तों को पूरा करने के लिए, हम Private Service Connect को डिप्लॉय करेंगे. इसमें, /32 का यूनीक पता, बीओटीओ कॉन्फ़िगरेशन, और डीएनएस रिकॉर्ड के अपडेट शामिल होंगे. वर्चुअल मशीन 1, क्लाउड स्टोरेज बकेट को ऐक्सेस करने के लिए PSC का इस्तेमाल करेगी; वहीं दूसरी ओर, 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 कंसोल में, सबसे ऊपर दाईं ओर मौजूद टूलबार पर क्लाउड शेल आइकॉन पर क्लिक करें:

bce75f34b2c53987.png

प्रावधान करने और एनवायरमेंट से कनेक्ट होने में कुछ ही समय लगेगा. उसके पूरा हो जाने पर, आपको कुछ ऐसा दिखाई देगा:

f6ef2b5f13479f3a.png

इस वर्चुअल मशीन में ऐसे सभी डेवलपमेंट टूल मौजूद हैं जिनकी आपको ज़रूरत पड़ेगी. यह पांच जीबी की स्थायी होम डायरेक्ट्री उपलब्ध कराता है और 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 नेटवर्क बनाएं

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 से, इन्ग्रेस डेटा ट्रैफ़िक की अनुमति देता है. इस रेंज में वे सभी आईपी पते शामिल होते हैं जिनका इस्तेमाल आईएपी, टीसीपी फ़ॉरवर्ड करने के लिए करता है.

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> को कॉन्फ़िगर करते समय, आपको ऐसा यूनीक आईपी पता देना होगा जो आपके VPC में तय न हो.

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 का एंडपॉइंट बनाने पर, सर्विस डायरेक्ट्री उन एपीआई और सेवाओं के लिए डीएनएस रिकॉर्ड जनरेट करती है जो उस एंडपॉइंट का इस्तेमाल करके उपलब्ध कराए जाते हैं.

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

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

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

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

उदाहरण के लिए: 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 

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

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

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

तीन बार + (नीचे स्क्रीनशॉट) पर क्लिक करके अतिरिक्त क्लाउड शेल टर्मिनल बनाएं.

69ea94e1527912bb.png

सार्वजनिक Google API की पुष्टि करने के लिए इस्तेमाल की जाने वाली वर्चुअल मशीन (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 

टैब 2 एसएसएच से 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"

क्लाउड शेल के ज़रिए टैब 3 एसएसएच से 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"

क्लाउड शेल के ज़रिए टैब 4 शेल एसएसएच से 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 के व्यवहार की पुष्टि करें

टैब 4 (psc-instance-2) से tcpdump को शुरू करना और डीएनएस ट्रैफ़िक को मॉनिटर करना

sudo tcpdump -vv -i eth0 port 53

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

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

gsutil डीबग की जांच करें. 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>

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

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 के व्यवहार में बदलाव करें

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

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

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

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

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

[GoogleCompute]
service_account = default

नैनो या VI एडिटर का इस्तेमाल करके बीओटीओ कॉन्फ़िगरेशन अपडेट करें. साथ ही, पक्का करें कि सभी एंट्री कॉपी करके चिपकाई गई हैं.

उदाहरण: सूडो नैनो /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

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

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 लुकअप व्यवहार की पुष्टि करें

टैब 3 (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>

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

@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. क्लीनअप का तरीका

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

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 में जाकर, पक्का करें कि सही प्रोजेक्ट देखा जा रहा हो. इसके बाद, नेटवर्किंग सेवाएं → Cloud DNS चुनें

16. बधाई हो!

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

इसमें हमने इन विषयों के बारे में बताया

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