Private Service Connect की बदलाव करने की सुविधा से जुड़ा कोडलैब

1. परिचय

Private Service Connect, Google Cloud नेटवर्किंग की एक सुविधा है. इससे उपभोक्ता, मैनेज की गई सेवाओं को अपने वीपीसी नेटवर्क से निजी तौर पर ऐक्सेस कर सकते हैं. इसी तरह, मैनेज की गई सेवा देने वाली कंपनियां इन सेवाओं को अपने अलग-अलग वीपीसी नेटवर्क में होस्ट कर सकती हैं. साथ ही, अपने उपभोक्ताओं को निजी कनेक्शन उपलब्ध करा सकती हैं.

अब तक, सेवा अटैचमेंट के ज़रिए पीएससी सेवाओं को ऐक्सेस करने की सुविधा मिलने के बाद, सेवा अटैचमेंट को हटाए बिना और उपभोक्ता पीएससी एंडपॉइंट कनेक्टिविटी में रुकावट डाले बिना, सेवा लोड बैलेंसर में बदलाव नहीं किए जा सकते थे. पीएसई में बदलाव करने की सुविधा के आने से, प्रोड्यूसर पीएससी एंडपॉइंट कनेक्शन को बनाए रखते हुए, अपने लोड बैलेंसर को अपडेट कर सकते हैं. लोड बैलेंसर बदलते समय, सेवा अटैचमेंट से पीएससी एंडपॉइंट कनेक्शन बनाए रखने से, उपभोक्ता को कोई कार्रवाई करने की ज़रूरत नहीं पड़ती.

फ़िलहाल, पीएससी में बदलाव करने की सुविधा इन पर लागू होगी

  • उसी तरह के लोड बैलेंसर फ़ॉरवर्डिंग नियम पर माइग्रेट करना. उदाहरण के लिए, नेटवर्क पासथ्रू से नेटवर्क पासथ्रू)
  • किसी दूसरे टाइप के लोड बैलेंसर फ़ॉरवर्डिंग नियम पर माइग्रेट करना (उदाहरण के लिए, ऐप्लिकेशन लोड बैलेंसर को नेटवर्क पासथ्रू)

पीएसडी में बदलाव करने की सुविधा के तहत, फ़ॉरवर्ड करने के मौजूदा नियम में बदलाव नहीं किया जा सकता.

इस लैब में, आपको एक प्रोड्यूसर वेब सेवा बनानी होगी. इसे इंटरनल नेटवर्क पासथ्रू लोड बैलेंसर के ज़रिए ऐक्सेस किया जा सकेगा. इसके बाद, आपको यह पक्का करना होगा कि सेवा, पीएससी एंडपॉइंट के ज़रिए कनेक्ट हो रही हो. इसके बाद, आपको सेवा अटैचमेंट के असोसिएशन को इंटरनल ऐप्लिकेशन लोड बैलेंसर के नए फ़ॉरवर्डिंग नियम में अपडेट करना होगा.

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

  • पीएसए प्रोड्यूसर सेवा के तौर पर उपलब्ध कराई गई एक सामान्य Apache वेब सेवा बनाएं.
  • पीएससी एंडपॉइंट बनाएं.
  • उपयोगकर्ता सेवा कॉल के लिए, Cloud DNS का प्राइवेट ज़ोन बनाएं.
  • PSC Mutability का इस्तेमाल करके, सेवा अटैचमेंट से जुड़े फ़ॉरवर्डिंग के नियम को अपडेट करें.

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

  • मालिक की अनुमतियों वाला Google Cloud प्रोजेक्ट
  • Google Cloud नेटवर्किंग की बुनियादी जानकारी

2. टेस्ट एनवायरमेंट

आम तौर पर, प्रोड्यूसर और कंज्यूमर अलग-अलग प्रोजेक्ट में काम करते हैं. आसान बनाने के लिए, हम सभी कार्रवाइयां एक ही प्रोजेक्ट में करेंगे. हालांकि, अगर उपयोगकर्ता अलग-अलग प्रोजेक्ट में काम करना चाहता है, तो हर चरण को प्रोड्यूसर या कंज्यूमर प्रोजेक्ट के तौर पर लेबल किया जाएगा.

इस लैब के लिए, हम तीन सबनेट वाला प्रोड्यूसर-वीपीसी बनाकर शुरुआत करेंगे. एक सबनेट का इस्तेमाल, प्रोड्यूसर सेवा और टेस्ट वीएम को होस्ट करने के लिए किया जाएगा. दूसरे सबनेट का इस्तेमाल, लोड बैलेंसर फ़ॉरवर्डिंग के नियमों के लिए किया जाएगा. तीसरे सबनेट का इस्तेमाल, पीएससी एनएटी सबनेट के लिए किया जाएगा. Linux पैकेज डाउनलोड करने के लिए, हमें Cloud Router और Cloud NAT की ज़रूरत होगी, ताकि इंटरनेट से कनेक्ट किया जा सके. हम अपनी Apache सेवा को अनमैनेज्ड इंस्टेंस ग्रुप के ज़रिए कॉन्फ़िगर करेंगे. इसके बाद, इसे इंटरनल रीजनल नेटवर्क पासथ्रू लोड बैलेंसर के ज़रिए उपलब्ध कराएंगे. साथ ही, फ़ॉरवर्डिंग के नियम को सेवा अटैचमेंट से जोड़ेंगे.

उपयोगकर्ता की तरफ़ से, हम एक सबनेट के साथ consumer-vpc बनाएंगे, ताकि हम अपने पीएससी एंडपॉइंट और टेस्ट क्लाइंट वीएम को होस्ट कर सकें. हम होस्टनेम के ज़रिए सेवा को ऐक्सेस करने के लिए, Cloud DNS का निजी ज़ोन कॉन्फ़िगर करेंगे.

पीएसई में बदलाव करने की सुविधा दिखाने के लिए, हम प्रोड्यूसर के नेटवर्क में दो और सबनेट जोड़ेंगे. एक सबनेट का इस्तेमाल नई सेवा वाले वीएम को होस्ट करने के लिए किया जाएगा. वहीं, दूसरे सबनेट का इस्तेमाल लोड बैलेंसर के प्रॉक्सी-ओनली सबनेट के लिए किया जाएगा. हम Apache वेब सर्वर को होस्ट करने वाली एक नई वीएम बनाएंगे. इसे फिर से अनमैनेज्ड इंस्टेंस ग्रुप के ज़रिए कॉन्फ़िगर किया जाएगा. साथ ही, इसे नए इंटरनल रीजनल ऐप्लिकेशन लोड बैलेंसर के ज़रिए उपलब्ध कराया जाएगा. हम सेवा अटैचमेंट को अपडेट करके, नए फ़ॉरवर्डिंग नियम पर ले जाएंगे. साथ ही, यह जांच करेंगे कि उपभोक्ता के लिए कनेक्टिविटी बनी रहे.

683e2b440a0cc07f.png

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

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

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

295004821bab6a87.png

37d264871000675d.png

96d86d3d5655cdbe.png

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

Cloud Shell शुरू करें

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

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

Cloud Shell चालू करें

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

Google Cloud Shell टर्मिनल का स्क्रीनशॉट. इसमें दिखाया गया है कि एनवायरमेंट कनेक्ट हो गया है

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

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

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

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

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
export project=[YOUR-PROJECT-NAME]
export region=us-central1
export zone=$region-a
echo $project
echo $region
echo $zone

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

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

5. Producer Network बनाना [Producer Project]

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

Cloud Shell से

gcloud compute networks create producer-vpc \
    --subnet-mode=custom

सबनेट बनाना

हम producer-vpc में तीन सबनेट डिप्लॉय करके शुरुआत करेंगे. एक सबनेट का इस्तेमाल, प्रोड्यूसर सेवा को डिप्लॉय करने के लिए किया जाएगा. दूसरे का इस्तेमाल, लोड बैलेंसर फ़ॉरवर्डिंग के नियमों के लिए किया जाएगा. तीसरे सबनेट का इस्तेमाल, हमारे पीएससी एनएटी सबनेट के लिए पीएससी सेवा अटैचमेंट से जुड़े काम के लिए किया जाएगा.

Cloud Shell से

gcloud compute networks subnets create producer-service-subnet \
    --network=producer-vpc \
    --range=10.0.0.0/28 \
    --region=$region

gcloud compute networks subnets create producer-fr-subnet \
        --network=producer-vpc \
        --range=192.168.0.0/28 \
        --region=$region

gcloud compute networks subnets create psc-nat-subnet \
    --network=producer-vpc \
    --range=10.100.0.0/28 \
    --region=$region \
    --purpose=PRIVATE_SERVICE_CONNECT

Cloud NAT बनाएं

हमारी प्रोड्यूसर सेवाओं के लिए सही पैकेज इंस्टॉल करने के लिए, Cloud NAT की ज़रूरत होती है.

Cloud Shell से

gcloud compute routers create $region-cr \
    --network=producer-vpc \
    --region=$region

Cloud Shell से

gcloud compute routers nats create $region-nat \
    --router=$region-cr \
    --region=$region \
    --nat-all-subnet-ip-ranges \
    --auto-allocate-nat-external-ips

नेटवर्क फ़ायरवॉल की नीति और नियम बनाना

Cloud Shell से

gcloud compute network-firewall-policies create producer-vpc-policy --global

gcloud compute network-firewall-policies associations create \
    --firewall-policy producer-vpc-policy \
    --network producer-vpc \
    --name network-producer-vpc \
    --global-firewall-policy

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

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

Cloud Shell से

gcloud compute network-firewall-policies rules create 1000 \
    --action ALLOW \
    --firewall-policy producer-vpc-policy \
    --description "SSH with IAP" \
    --direction INGRESS \
    --src-ip-ranges 35.235.240.0/20 \
    --layer4-configs tcp:22  \
    --global-firewall-policy

हम फ़ायरवॉल के तीन नियमों से शुरुआत करेंगे. पहला नियम, लोड बैलेंसर की हेल्थ जांच के लिए वीएम को ऐक्सेस करने की अनुमति देगा (2000). दूसरा नियम, पीएससी एनएटी रेंज से वीएम को ऐक्सेस करने की अनुमति देगा (3000). तीसरा नियम, जांच के मकसद से सर्विस सबनेट में वीएम के बीच कनेक्टिविटी की अनुमति देगा (4000). हम पोर्ट 80 के लिए सभी नियम बनाएंगे, क्योंकि हम अपनी सेवा के लिए इस पोर्ट का इस्तेमाल करेंगे.

Cloud Shell से

gcloud compute network-firewall-policies rules create 2000 \
    --action ALLOW \
    --firewall-policy producer-vpc-policy \
    --description "LB healthchecks" \
    --direction INGRESS \
    --src-ip-ranges 130.211.0.0/22,35.191.0.0/16 \
    --layer4-configs tcp:80  \
    --global-firewall-policy

gcloud compute network-firewall-policies rules create 3000 \
    --action ALLOW \
    --firewall-policy producer-vpc-policy \
    --description "allow access from PSC NAT subnet" \
    --direction INGRESS \
    --src-ip-ranges 10.100.0.0/28 \
    --layer4-configs tcp:80  \
    --global-firewall-policy

 gcloud compute network-firewall-policies rules create 4000 \
    --action ALLOW \
    --firewall-policy producer-vpc-policy \
    --description "allow access between producer service VMs and testing client for testing purposes" \
    --direction INGRESS \
    --src-ip-ranges 10.0.0.0/28 \
    --layer4-configs tcp:80 \
    --global-firewall-policy

6. प्रोड्यूसर सर्विस [प्रोड्यूसर प्रोजेक्ट] बनाएं

हम अनमैनेज्ड इंस्टेंस ग्रुप का इस्तेमाल करके, एक सामान्य Apache वेब सेवा बनाएंगे. इसमें "I am a Producer Service." दिखेगा.

इंस्टेंस बनाएं

Cloud Shell से

gcloud compute instances create producer-service-vm \
    --network producer-vpc \
    --subnet producer-service-subnet \
    --zone $zone \
    --no-address \
    --metadata startup-script='#! /bin/bash
    sudo apt-get update
    sudo apt-get install apache2 -y
    a2enmod ssl
    sudo a2ensite default-ssl
    echo "I am a Producer Service." | \
    tee /var/www/html/index.html
    systemctl restart apache2'

अनमैनेज्ड इंस्टेंस ग्रुप बनाना

Cloud Shell से

gcloud compute instance-groups unmanaged create producer-uig \
  --zone=$zone

अभी बनाए गए अनमैनेज्ड इंस्टेंस ग्रुप में producer-service-vm जोड़ें.

Cloud Shell से

gcloud compute instance-groups unmanaged add-instances producer-uig \
  --zone=$zone \
  --instances=producer-service-vm

लोड बैलेंसर कॉम्पोनेंट बनाना

हम प्रोड्यूसर सेवा के वर्शन 1 को पोर्ट 80 पर नेटवर्क पासथ्रू लोड बैलेंसर का इस्तेमाल करके दिखाएंगे.

पोर्ट 80 के लिए हेल्थ चेक डिप्लॉय करें.

Cloud Shell से

gcloud compute health-checks create http producer-hc \
        --region=$region

बैकएंड सेवा को डिप्लॉय करें और बैकएंड को बैकएंड सेवा में जोड़ें.

Cloud Shell से

gcloud compute backend-services create producer-bes \
  --load-balancing-scheme=internal \
  --protocol=tcp \
  --region=$region \
  --health-checks=producer-hc \
  --health-checks-region=$region

gcloud compute backend-services add-backend producer-bes \
  --region=$region \
  --instance-group=producer-uig \
  --instance-group-zone=$zone

वह स्टैटिक आईपी पता बनाएं जिसका इस्तेमाल लोड बैलेंसर के फ़ॉरवर्डिंग नियम के लिए किया जाएगा.

Cloud Shell से

gcloud compute addresses create producer-fr-ip\
  --region $region \
  --subnet producer-fr-subnet \
  --addresses 192.168.0.2

बैकएंड सेवा और आईपी पते का इस्तेमाल करके, लोड बैलेंसर फ़ॉरवर्डिंग का ऐसा नियम बनाएं जो पोर्ट 80 को ऐक्सेस करने की अनुमति देता हो. हमने इसे पहले बनाया था.

Cloud Shell से

gcloud compute forwarding-rules create producer-fr \
  --region=$region \
  --load-balancing-scheme=internal \
  --network=producer-vpc \
  --subnet=producer-fr-subnet \
  --address=producer-fr-ip \
  --ip-protocol=TCP \
  --ports=80 \
  --backend-service=producer-bes \
  --backend-service-region=$region

7. Producer Service [Producer Project] की जांच करना

प्रोड्यूसर-सर्विस-सबनेट में एक टेस्ट वीएम बनाएं. वीएम में लॉग इन करें और Apache सेवा को कॉल करके देखें.

Cloud Shell से

 gcloud compute instances create producer-test-vm \
    --zone=$zone \
    --subnet=producer-service-subnet \
    --no-address

Cloud Shell से

gcloud compute ssh producer-test-vm \
    --zone=$zone \
    --command="curl -s 192.168.0.2/index.html"

अनुमानित आउटपुट

I am a Producer Service.

8. सर्विस अटैचमेंट के ज़रिए प्रोड्यूसर सर्विस को ऐक्सेस करने की अनुमति [प्रोड्यूसर प्रोजेक्ट]

सेवा अटैचमेंट बनाएं. इसे psc-nat-subnet का इस्तेमाल करके बनाए गए फ़ॉरवर्डिंग नियम से जोड़ें.

Cloud Shell से

gcloud compute service-attachments create producer-attachment \
    --region=$region \
    --producer-forwarding-rule=producer-fr  \
    --connection-preference=ACCEPT_AUTOMATIC \
    --nat-subnets=psc-nat-subnet

आपको सेवा अटैचमेंट यूआरआई (selfLink) को नोट कर लेना चाहिए, क्योंकि पीएससी एंडपॉइंट कॉन्फ़िगरेशन के लिए, आपको आने वाले चरण में इसकी ज़रूरत पड़ेगी. इसे Cloud Shell में यह कमांड चलाकर पाया जा सकता है.

Cloud Shell से

gcloud compute service-attachments describe producer-attachment --region=$region

आउटपुट का सैंपल

connectionPreference: ACCEPT_AUTOMATIC
creationTimestamp: '2026-02-10T07:50:04.250-08:00'
description: ''
enableProxyProtocol: false
fingerprint: xxx
id: 'xxx'
kind: compute#serviceAttachment
name: producer-attachment
natSubnets:
- https://www.googleapis.com/compute/v1/projects/$project/regions/$region/subnetworks/psc-nat-subnet
pscServiceAttachmentId:
  high: 'xxx'
  low: 'xxx'
reconcileConnections: false
region: https://www.googleapis.com/compute/v1/projects/$project/regions/$region
selfLink: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/serviceAttachments/producer-attachment
targetService: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/producer-fr

projects से शुरू होने वाला यूआरआई कॉपी करें

उदाहरण: projects/$project/regions/$region/serviceAttachments/producer-attachment

9. उपभोक्ता नेटवर्क [उपभोक्ता प्रोजेक्ट] बनाएं

VPC नेटवर्क बनाना

Cloud Shell से

gcloud compute networks create consumer-vpc \
    --subnet-mode=custom

सबनेट बनाएं

एक ही सबनेट डिप्लॉय किया जाएगा. इसमें हम पीएससी एंडपॉइंट और टेस्ट क्लाइंट वीएम डिप्लॉय करेंगे.

Cloud Shell से

gcloud compute networks subnets create consumer-subnet \
    --network=consumer-vpc \
    --range=10.0.0.0/28 \
    --region=$region

नेटवर्क फ़ायरवॉल की नीति और नियम बनाना

Cloud Shell से

gcloud compute network-firewall-policies create consumer-vpc-policy --global

gcloud compute network-firewall-policies associations create \
    --firewall-policy consumer-vpc-policy \
    --network consumer-vpc \
    --name network-consumer-vpc \
    --global-firewall-policy

हम SSH के लिए IAP का इस्तेमाल करने के लिए, consumer-vpc को भी कॉन्फ़िगर करेंगे.

Cloud Shell से

gcloud compute network-firewall-policies rules create 1000 \
    --action ALLOW \
    --firewall-policy consumer-vpc-policy \
    --description "SSH with IAP" \
    --direction INGRESS \
    --src-ip-ranges 35.235.240.0/20 \
    --layer4-configs tcp:22  \
    --global-firewall-policy

10. Private Service Connect एंडपॉइंट बनाएं [उपयोगकर्ता प्रोजेक्ट]

उस स्टैटिक आईपी पते को रिज़र्व करें जिसका इस्तेमाल पीएससी एंडपॉइंट के लिए किया जाएगा.

Cloud Shell से

gcloud compute addresses create psc-endpoint-ip \
    --region=$region \
    --subnet=consumer-subnet \
    --addresses 10.0.0.2

आरक्षित किए गए स्टैटिक आईपी पते और सेवा अटैचमेंट यूआरआई का इस्तेमाल करके, पीएससी एंडपॉइंट बनाएं. हमने इस यूआरआई को पहले नोट किया था.

Cloud Shell से

gcloud compute forwarding-rules create psc-endpoint \
  --region=$region \
  --network=consumer-vpc \
  --address=psc-endpoint-ip \
  --target-service-attachment=projects/$project/regions/$region/serviceAttachments/producer-attachment

11. पीएससी एंडपॉइंट [उपयोगकर्ता प्रोजेक्ट] के लिए, प्राइवेट डीएनएस ज़ोन कॉन्फ़िगर करना

Cloud DNS का इस्तेमाल करके, हम myservice.com नाम का एक निजी डीएनएस ज़ोन कॉन्फ़िगर करेंगे. इसका इस्तेमाल हमारे पीएससी एंडपॉइंट के साथ किया जाएगा.

Cloud Shell से

gcloud dns managed-zones create "consumer-service" \
    --dns-name=myservice.com \
    --description="consumer service dns" \
    --visibility=private \
    --networks=consumer-vpc

gcloud dns record-sets transaction start \
   --zone="consumer-service"

myservice.com के लिए एक A रिकॉर्ड बनाएं और उसे पीएससी एंडपॉइंट के आईपी पते पर पॉइंट करें.

Cloud Shell से

gcloud dns record-sets transaction add 10.0.0.2 \
   --name=myservice.com \
   --ttl=300 \
   --type=A \
   --zone="consumer-service"

gcloud dns record-sets transaction execute \
   --zone="consumer-service"

12. पीएससी एंडपॉइंट की जांच करें [उपयोगकर्ता प्रोजेक्ट]

क्लाइंट वीएम बनाना

Cloud Shell से

gcloud compute instances create consumer-client-vm \
    --zone=$zone \
    --subnet=consumer-subnet \
    --no-address

पीएसएसी एंडपॉइंट की कनेक्टिविटी की जांच करना

Cloud Shell से

gcloud compute ssh consumer-client-vm \
    --zone=$zone \
    --command="curl -s myservice.com/index.html"

अनुमानित आउटपुट

I am a Producer Service.

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

13. Create Updated Producer Service [Producer Project]

हम अपनी प्रोड्यूसर सेवा को अपडेट करने के लिए, एक नई वीएम को डिप्लॉय करेंगे. यह वीएम, "I am a NEW Producer service." मैसेज के साथ, Apache वेब सर्वर की तरह ही काम करेगी. हम उस वीएम को नए अनमैनेज्ड इंस्टेंस ग्रुप में जोड़ेंगे. साथ ही, उस अनमैनेज्ड इंस्टेंस ग्रुप को अपने नए लोड बैलेंसर के लिए बैकएंड के तौर पर इस्तेमाल करेंगे. हम नेटवर्क पासथ्रू लोड बैलेंसर का इस्तेमाल करने के बजाय, अपने लोड बैलेंसर को रीजनल इंटरनल ऐप्लिकेशन लोड बैलेंसर पर अपडेट करेंगे.

नेटवर्क अपडेट करना

एक नया सबनेट बनाएं. इसका इस्तेमाल, ऐप्लिकेशन लोड बैलेंसर के लिए सिर्फ़ प्रॉक्सी वाले सबनेट के तौर पर किया जाएगा.

Cloud Shell से

gcloud compute networks subnets create lb-proxy-subnet \
    --network=producer-vpc \
    --range=10.200.0.0/24 \
    --region=$region \
    --purpose=REGIONAL_MANAGED_PROXY \
    --role=ACTIVE

एक नया सबनेट बनाएं, जहां हमारी नई सेवा होस्ट की जाएगी.

Cloud Shell से

gcloud compute networks subnets create producer-service-new-subnet \
    --network=producer-vpc \
    --range=10.0.1.0/28 \
    --region=$region

फ़ायरवॉल का एक नया नियम बनाएं. इससे प्रॉक्सी-ओनली सबनेट से, हमारी नई प्रोड्यूसर सेवा से कनेक्ट किया जा सकेगा.

Cloud Shell से

 gcloud compute network-firewall-policies rules create 3001 \
    --action ALLOW \
    --firewall-policy producer-vpc-policy \
    --description "allow access from proxy only subnet" \
    --direction INGRESS \
    --src-ip-ranges 10.200.0.0/24 \
    --layer4-configs tcp:80  \
    --global-firewall-policy

इंस्टेंस बनाएं

Cloud Shell से

gcloud compute instances create new-producer-service-vm \
    --network producer-vpc \
    --subnet producer-service-new-subnet \
    --zone $zone \
    --no-address \
    --metadata startup-script='#! /bin/bash
    sudo apt-get update
    sudo apt-get install apache2 -y
    a2enmod ssl
    sudo a2ensite default-ssl
    echo "I am a NEW Producer Service." | \
    tee /var/www/html/index.html
    systemctl restart apache2'

अनमैनेज्ड इंस्टेंस ग्रुप बनाना

Cloud Shell से

gcloud compute instance-groups unmanaged create producer-new-uig \
  --zone=$zone

gcloud compute instance-groups unmanaged add-instances producer-new-uig \
  --zone=$zone \
  --instances=new-producer-service-vm

gcloud compute instance-groups unmanaged set-named-ports producer-new-uig \
    --named-ports=http:80 \
    --zone=$zone

नया लोड बैलेंसर कॉम्पोनेंट बनाना

बैकएंड सेवा बनाएं. ध्यान दें कि हम INTERNAL_MANAGED लोड बैलेंसिंग स्कीम का इस्तेमाल कर रहे हैं, क्योंकि हम इंटरनल ऐप्लिकेशन लोड बैलेंसर पर अपडेट कर रहे हैं.

Cloud Shell से

gcloud compute backend-services create producer-new-bes \
  --load-balancing-scheme=INTERNAL_MANAGED \
  --protocol=http \
  --region=$region \
  --health-checks=producer-hc \
  --health-checks-region=$region

अनमैनेज किए गए इंस्टेंस ग्रुप को बैकएंड सेवा के बैकएंड के तौर पर जोड़ें.

Cloud Shell से

gcloud compute backend-services add-backend producer-new-bes \
  --region=$region \
  --instance-group=producer-new-uig \
  --instance-group-zone=$zone

यूआरएल मैप और टारगेट एचटीटीपी प्रॉक्सी बनाएं.

Cloud Shell से

gcloud compute url-maps create producer-url-map \
  --default-service=producer-new-bes \
  --region=$region

gcloud compute target-http-proxies create http-proxy \
  --url-map=producer-url-map \
  --region=$region

वह स्टैटिक आईपी पता बनाएं जिसका इस्तेमाल हम फ़ॉरवर्ड करने के नियम के लिए करेंगे. यह उसी सबनेट से आएगा जिसका इस्तेमाल हमने ओरिजनल फ़ॉरवर्डिंग के नियम के लिए किया था.

Cloud Shell से

gcloud compute addresses create producer-fr-new-ip\
  --region $region \
  --subnet producer-fr-subnet \
  --addresses 192.168.0.3

फ़ॉरवर्ड करने का नियम बनाएं.

Cloud Shell से

gcloud compute forwarding-rules create new-producer-fr \
  --load-balancing-scheme=INTERNAL_MANAGED \
  --network=producer-vpc \
  --subnet=producer-fr-subnet \
  --address=producer-fr-new-ip \
  --ports=80 \
  --region=$region \
  --target-http-proxy=http-proxy \
  --target-http-proxy-region=$region

14. अपडेट की गई प्रोड्यूसर सेवा की जांच करना [प्रोड्यूसर प्रोजेक्ट]

हम उसी टेस्ट वीएम का इस्तेमाल करेंगे जिसे हमने मूल रूप से डिप्लॉय की गई सेवा की जांच करने के लिए बनाया था.

Cloud Shell से

gcloud compute ssh producer-test-vm \
    --zone=$zone \
    --command="curl -s 192.168.0.3/index.html"

ध्यान दें कि हम अपडेट किए गए आईपी पते को कॉल कर रहे हैं! 192.168.0.3, हमारे रीजनल इंटरनल ऐप्लिकेशन लोड बैलेंसर का आईपी पता है.

अनुमानित आउटपुट

I am a NEW Producer Service.

15. सर्विस अटैचमेंट [प्रोड्यूसर प्रोजेक्ट] अपडेट करें

सेवा अटैचमेंट के फ़ॉरवर्डिंग के नियम में हुए अपडेट को बेहतर तरीके से समझने के लिए, हम बदलाव से पहले और बाद में सेवा अटैचमेंट के बारे में जानकारी देने वाले कमांड को चला सकते हैं.

Cloud Shell से

gcloud compute service-attachments describe producer-attachment \
    --region=$region \
    --format="value(targetService)"

अनुमानित आउटपुट

https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/producer-fr

सेवा अटैचमेंट अपडेट करें.

Cloud Shell से

gcloud compute service-attachments update producer-attachment \
  --region=$region \
  --target-service=projects/$project/regions/$region/forwardingRules/new-producer-fr

अब फ़ॉरवर्ड करने के नए नियम को देखने के लिए, describe कमांड को फिर से चलाएं.

Cloud Shell से

gcloud compute service-attachments describe producer-attachment \
    --region=$region \
    --format="value(targetService)"

अनुमानित आउटपुट

https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/new-producer-fr

16. उपयोगकर्ता के पीएससी कनेक्शन की फिर से जांच करना [उपयोगकर्ता प्रोजेक्ट]

उसी उपभोक्ता क्लाइंट में लॉग इन करें.

Cloud Shell से

gcloud compute ssh consumer-client-vm \
    --zone=$zone \
    --command="curl -s myservice.com/index.html"

अनुमानित आउटपुट

 I am a NEW Producer Service.

बधाई हो! आपने पीएससी प्रोड्यूसर सेवा के लोड बैलेंसर को अपडेट कर दिया है. इसके लिए, उपभोक्ता के तौर पर आपको कॉन्फ़िगरेशन में कोई बदलाव करने की ज़रूरत नहीं पड़ी!

17. क्लीनअप करने का तरीका [उपभोक्ता प्रोजेक्ट]

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

gcloud dns record-sets delete myservice.com --zone="consumer-service" --type=A -q

gcloud dns managed-zones delete "consumer-service" -q

gcloud compute forwarding-rules delete psc-endpoint --region=$region -q

gcloud compute addresses delete psc-endpoint-ip --region=$region -q

gcloud compute instances delete consumer-client-vm --zone=$zone --project $project -q

gcloud compute network-firewall-policies rules delete 1000 --firewall-policy consumer-vpc-policy --global-firewall-policy -q

gcloud compute network-firewall-policies associations delete --firewall-policy=consumer-vpc-policy  --name=network-consumer-vpc --global-firewall-policy -q

gcloud compute network-firewall-policies delete consumer-vpc-policy --global -q

gcloud compute networks subnets delete consumer-subnet --region $region -q

gcloud compute networks delete consumer-vpc -q

18. [Producer Project] में क्लीनअप करने के चरण

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

gcloud compute service-attachments delete producer-attachment --region=$region -q

gcloud compute instances delete producer-test-vm --zone=$zone --project $project -q

gcloud compute forwarding-rules delete new-producer-fr --region=$region -q

gcloud compute addresses delete producer-fr-new-ip --region $region -q

gcloud compute target-http-proxies delete http-proxy --region $region -q

gcloud compute url-maps delete producer-url-map --region $region -q

gcloud compute backend-services delete producer-new-bes --region $region -q

gcloud compute instance-groups unmanaged delete producer-new-uig --zone $zone -q

gcloud compute instances delete new-producer-service-vm --zone $zone --project $project -q

gcloud compute networks subnets delete producer-service-new-subnet --region $region -q

gcloud compute networks subnets delete lb-proxy-subnet --region $region -q

gcloud compute forwarding-rules delete producer-fr --region=$region -q

gcloud compute addresses delete producer-fr-ip --region $region -q

gcloud compute backend-services delete producer-bes --region $region -q

gcloud compute health-checks delete producer-hc --region $region -q

gcloud compute instance-groups unmanaged delete producer-uig --zone $zone -q

gcloud compute instances delete producer-service-vm --zone $zone --project $project -q

gcloud compute network-firewall-policies rules delete 4000 --firewall-policy producer-vpc-policy --global-firewall-policy -q

gcloud compute network-firewall-policies rules delete 3001 --firewall-policy producer-vpc-policy --global-firewall-policy -q

gcloud compute network-firewall-policies rules delete 3000 --firewall-policy producer-vpc-policy --global-firewall-policy -q

gcloud compute network-firewall-policies rules delete 2000 --firewall-policy producer-vpc-policy --global-firewall-policy -q

gcloud compute network-firewall-policies rules delete 1000 --firewall-policy producer-vpc-policy --global-firewall-policy -q

gcloud compute network-firewall-policies associations delete --firewall-policy=producer-vpc-policy  --name=network-producer-vpc --global-firewall-policy -q

gcloud compute network-firewall-policies delete producer-vpc-policy --global -q

gcloud compute routers nats delete $region-nat --router=$region-cr --region=$region -q

gcloud compute routers delete $region-cr --region=$region -q

gcloud compute networks subnets delete psc-nat-subnet --region=$region -q

gcloud compute networks subnets delete producer-fr-subnet --region=$region -q

gcloud compute networks subnets delete producer-service-subnet --region=$region -q

gcloud compute networks delete producer-vpc -q

19. बधाई हो!

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

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

  • पीएसए प्रोड्यूसर सेवा के तौर पर उपलब्ध कराई गई एक सामान्य Apache वेब सेवा बनाएं.
  • पीएससी एंडपॉइंट बनाएं.
  • उपयोगकर्ता सेवा कॉल के लिए, Cloud DNS का प्राइवेट ज़ोन बनाएं.
  • PSC Mutability का इस्तेमाल करके, सेवा अटैचमेंट से जुड़े फ़ॉरवर्डिंग के नियम को अपडेट करें.